IKVMCを使用してJavaを.NETライブラリに変換-警告IKVMC0108:クラスファイルではありません

.net ant ikvm java
IKVMCを使用してJavaを.NETライブラリに変換-警告IKVMC0108:クラスファイルではありません
NETプロジェクトで使用するJavaツール(マレットと呼ばれます)http://mallet.cs.umass.edu/download.phpがあります。

このツールを最初に.NETライブラリに変換するには、Apache Antを使用して単一の.jarファイルでビルドしようとしました。 上記のリンクの指示に対応するすべてを行いました。

  1. 開発者向けリリースをMercurialリポジトリからダウンロードします。

  2. Apache Antをダウンロードし、JDKをインストールし、Apache Antを使用するようにJAVA_HOME varを設定します。

  3. Antを使用して、単一のmallet.jarファイルを作成しました。

そして、IKVMCを使用してmallet.jarを.NETライブラリに変換します。 変換するときに、次のような多くの警告が表示されます。

Warning IKVMC0108: not a class file "cc/mallet/util/tests/TestPriorityQueue$1.cl
ass", including it as resource
    (class format error "51.0")

これらの警告にもかかわらず、mallet.dllが作成されました。 しかし、.NETプロジェクトから参照しようとすると、「空」に見えます。 クラスや名前空間はありません。 IKVM.OpenJDL.Coreを参照することを忘れないでください。

そして、これは私がGoogleで同じ問題を見つけることができないことは珍しいです。

問題は警告にあると思います。 また、Antを使用したことがないため、すべてのプロセスを正確に理解していません。

  5  2


ベストアンサー

クラス形式バージョン51はJava 7で導入されました。

IKVMはおそらくそのバージョンをまだサポートしておらず、引用するファイル名( cc / mallet / util / tests / TestPriorityQueue $ 1.class)は、ライブラリに_certainly_が必要である` TestPriorityQueue`の匿名内部クラスを指しています正しく動作します。

私の提案:古いJDKを使用してMalletをコンパイルするか、「少なくとも6」に設定された「-source」および「-target」スイッチを使用して(少なくともJava 6用にコンパイルされるように)

6


FYI v8.1(現在RC版)のIKVMはJava 8をサポートしています:

6


タイトルとURLをコピーしました