2011-10-24 17 views
4

私の.NETプロジェクトで使用したいJavaツール(Malletと呼ばれます) http://mallet.cs.umass.edu/download.php があります。IKVMCを使用したJavaから.NETライブラリへの変換 - 警告IKVMC0108:クラスファイルではありません

このツールを.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で働いたことがなく、私はすべてのプロセスを正確に理解していません。

答えて

6

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

IKVM最も可能性が高いあなたは確かTestPriorityQueueそのの匿名内部クラスで(cc/mallet/util/tests/TestPriorityQueue$1.class)のポイントを引用し、まだそのバージョンとファイル名をサポートしていません。ライブラリが正しく動作するために必要です。

私の提案:6に設定-source-targetスイッチを使用して、古いJDKや少なくともを使用してマレットをコンパイルする(これは、Java 6用にコンパイルだことを確保するため)。

+0

のJava 7のJava 6がインストール、アン。同じエラーが発生しました。 –

+0

@ValentinP .: **同じ**エラー? *同じバージョン番号を含む?次に、正しくクリーンアップしませんでした(つまり、古い '.class'ファイルがまだ存在していました)。また、Java 7は必要ありません。 'JAVA_HOME'を目的のJDKを指すように設定すれば十分です。 –

+0

次に、jarファイルを再構築する前に、buildディレクトリ内のすべての '.class'ファイルを削除してください。 –

関連する問題