1

Apachepoi.jarを.dllに変換しようとしています。以下のスクリプトを使用して変換しました。しかし、私は多くの警告とエラーを受け取りますその後、無効なオプション-resource:poi-3.8-20120326.dll。これが私が使用したスクリプトです。

ikvmc -target:library poi-ooxml-schemas-3.8-20120326.jar
ikvmc -target:library poi-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-scratchpad-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-ooxml-schemas-3.8-20120326.dll poi-scratchpad-3.8-20120326.dll poi-ooxml-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-ooxml-3.8-20120326.dll poi-excelant-3.8-20120326.jar

これはIKVM.Netを使用する正しい方法ですか。そうでない場合、これを行うための正しいスクリプトは何ですか。

4

4 に答える 4

2

コンパイラ-resourceオプションは次のように文書化されています。ikvmc

-resource:name =pathnameという名前のJavaリソースとしてパスを含めます

つまり、これは-resource、以前にコンパイルされたDLLではなく、リソースファイルをコンパイルに含めるために使用されていることを示しているようです。

この疑いは、次のアリラッパーの例でresourceオプションがどのように使用されているかを示すこの例によって確認されます。ikvmc

<resource name="/logs/logging.properties" path="${builddir}/logging.properties"/>

はjava-bytecode-to-.net-intermediate-languageコンパイラであるためikvmc、jarファイルの読み取り方法を理解しています。したがって、(以前に生成された)DLLをコンパイルサイクルに含めるのではなくikvmc、元のjarファイルを指定する必要があります。

これを行う最も簡単な方法は、おそらくすべてのjarファイルを一度に変換することです。

ikvmc -target:library poi-ooxml-schemas-3.8-20120326.jar poi-3.8-20120326.jar poi-scratchpad-3.8-20120326.jar ...
于 2012-12-01T11:55:40.390 に答える
1

オプション-resourceを-referenceに置き換える必要があります。

ただし、{}構文を使用して1つのステップでコンパイルするのが最善です。詳細については、wikiを参照してください。これは次のようになります。

ikvmc { -target:library poi-ooxml-schemas-3.8-20120326.jar } { -target:library poi-3.8-20120326.jar } { -target:library poi-scratchpad-3.8-20120326.jar } ....
于 2012-12-02T09:20:36.103 に答える
0

IKVM0.46.0.1を使用してApachePOI3.9を正常に変換して使用したプロジェクトを完了しました。変換されたDLLのセットは、2007より前および2007以降のMicrosoftOffice形式をサポートします。

前提条件:

POI 3.9をダウンロードし、すべてのJARファイルを1つのディレクトリにコピーします。IKVMをダウンロードします(バージョン0.46.0.1を使用しました)次のコマンド(すべてのPOIJARがある同じディレクトリのWindows7コマンドラインで実行)がうまくいきました。

ikvmc -target:library xmlbeans-2.3.0.jar
ikvmc -target:library stax-api-1.0.1.jar

ikvmc poi-ooxml-schemas-3.9-20121203.jar -target:library -reference:xmlbeans-2.3.0.dll -reference:stax-api-1.0.1.dll 


ikvmc -target:library log4j-1.2.13.jar
ikvmc -target:library commons-logging-1.1.jar
ikvmc -target:library commons-codec-1.5.jar

ikvmc poi-3.9-20121203.jar -target:library -reference:log4j-1.2.13.dll -reference:commons-logging-1.1.dll -reference:commons-codec-1.5.dll

ikvmc -target:library dom4j-1.6.1.jar

ikvmc poi-ooxml-3.9-20121203.jar -target:library -reference:poi-3.9-20121203.dll -reference:poi-ooxml-schemas-3.9-20121203.dll -reference:dom4j-1.6.1.dll -reference:xmlbeans-2.3.0.dll

それが役に立てば幸い。

于 2013-01-08T03:21:05.853 に答える
0

すべてのjarファイルを一度に変換するというFrankの答えは、私にとって問題を解決しました。これが私がPOI3.10で使用した完全なコマンドです。すべてのjarファイルは同じディレクトリにある必要があります。-outオプションを使用すると、出力dllの名前を指定できます。指定しない場合は、最初のjarから名前を取得します。

ikvmc -target:library -out:poi-3.10.dll xmlbeans-2.3.0.jar stax-api-1.0.1.jar poi-ooxml-schemas-3.10-FINAL-20140208.jar log4j-1.2.13.jar commons-logging-1.1.jar commons-codec-1.5.jar poi-3.10-FINAL-20140208.jar dom4j-1.6.1.jar poi-ooxml-3.10-FINAL-20140208.jar 
于 2014-06-02T14:28:22.823 に答える