3

Flying Saucer Java API を .NET で使用したかったので、IKVMを使用してFlying Saucerライブラリを変換しようとしました。

ikvmc core-renderer.jar

何らかの理由で、IKVMC から execore-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ます。DocumentException何かITextRender()がスローされる可能性があることに気付きましたが、すでに含めていますがcom.lowagie.text、何かアイデアはありますか?

4

2 に答える 2

5

この特定の状況では、Flying SaucerとiText(Flying Saucerの依存関係)の両方をレンダリングし、FlyingSaucerアセンブリにその依存関係を参照させる必要があることがわかりました。

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

(初心者の場合:ドキュメントを読んでおらず、コマンドを試しているだけの場合は、IKVMCに付随するDLLファイルも存在することを確認する必要があります。これを行う最も簡単な方法は、すべてのIKVMCファイルを自分の横にダンプすることです。 iText JARファイル)

于 2010-06-04T10:22:58.200 に答える
2

IKVM.AWT.WinForms.dllIKVM.OpenJDK.ClassLibrary.dllIKVM.Runtime.dllおよびIKVM.Runtime.JNI.dllアセンブリがプロジェクトに含まれていることを確認してください。-target:libraryまた、実行可能ファイルを生成して名前を変更することを避けるために、コンパイル時にスイッチを指定できます。

于 2010-06-01T08:18:25.160 に答える