2

私はC#にwekaを使用しており、IKVMを使用してweka.jarをc#-dllに移植しようとしています。チュートリアルはここにあります。

さて、binC#プログラムのディレクトリにあるものは次のとおりです。

weka.dll --IKVM によって生成

IKVM.OpenJDK.Core.dll -- IKVM ライブラリから

JVM.dll -- IKVM ライブラリから

Java/bin は私の PATH 変数にあります。

しかし、プログラムは次の時点で破綻します。

weka.core.Instances insts = new weka.core.Instances(new java.io.FileReader("iris.arff"));

エラーはjava.io.Fileの初期化にあります

一部のdllがC#/binにないためだと思います

IKVM と Java に関連するすべての dll を C#/bin ディレクトリにコピーすることで解決できます。しかし、それはとても醜いです。

Java ==IKVM==> C#ここで私の質問があります:プログラムが実際に必要とするランタイム ライブラリは何ですか?

アップデート

関連するすべてのものを C#/bin にコピーしたところ、機能しました。

しかし、私はこれをしたくないと信じてください。

4

1 に答える 1

2

あなたのプログラムが Java/IKVM のどの部分を必要としているかという質問には、あなたなしでは答えられません。あなたのプログラムを知っているのはあなただけです。小さなプログラムでは、IKVM dll の約 50% が必要です。これは、Java の依存関係が非常に大きいためです。

最小値は IKVM.OpenJDK.Core.dll および IKVM.Runtime.dll です。しかし、私はdllごとにdllを追加しません。それ以外の場合は、段階的に削除します。dll ファイル名または Ilspy を使用して、おそらく不要な dll を確認できます。

ここでは、まれに使用されるものと、それが使用されるものをいくつか示します。これはあなたにヒントを与えることができます:

  • IKVM.OpenJDK.Tools.dll - Java コンパイラ
  • *.exe - さまざまなツール
  • IKVM.OpenJDK.Jdbc.dll - SQL およびデータベース API
  • IKVM.OpenJDK.Corba.dll - コルバ
  • IKVM.OpenJDK.Beans.dll - プレーン オールド Bean
  • ikvm-native-win32-*.dll、JVM.dll、IKVM.Runtime.JNI.dll - ネイティブのもの (Java コードで既に dll を使用している場合)
  • IKVM.OpenJDK.Naming.dll - LDAP、DNS などのネーミング サービス
  • IKVM.AWT.WinForms.dll、IKVM.OpenJDK.SwingAWT.dll - 画像、フォント、GUI
于 2013-05-30T18:51:56.450 に答える