我想在.NET中使用Flying Saucer Java API,因此尝试使用IKVM转换Flying Saucer库:

ikvmc core-renderer.jar

由于某种原因,IKVMC给了我一个exe core-renderer.exe,因此我将其重命名为core-renderer.dll,添加到我的程序集中并被黑掉了。
using java.io;
using java.lang;
using com.lowagie.text;
using org.xhtmlrenderer.pdf;

namespace flying_saucer
{
    class FlyingSaucerApp
    {
        static void Main(string[] args)
        {
            // This works
            DocumentException dummy = new DocumentException();

            ITextRenderer renderer = new ITextRenderer();


            // For some reason, this raises NoClassDefFoundError
            renderer.setDocument(File("hello.xhtml").toURI().toURL().toString());
        }
    }
}

由于某种原因,它给出了java.lang.NoClassDefFoundError: com.lowagie.text.DocumentException。我意识到DocumentExceptionITextRender()可能会抛出的东西,但是我已经包含了com.lowagie.text,有什么想法吗?

最佳答案

事实证明,对于这种特殊情况,我需要同时渲染Flying Saucer和iText(Flight Saucer的依赖项),并让Flying Saucer程序集对其依赖项进行引用:

ikvmc -target:library itext.jar
ikvmc -target:library -reference:itext.dll core-renderer.jar

(对于新手:如果您没有阅读任何文档,而只是尝试使用命令,则还需要确保还附带了IKVMC附带的DLL文件-最简单的方法是将所有IKVMC文件转储到您的旁边iText JAR文件)

09-27 07:36