0

IKVM を使用して C# で opennlp ツールを使用しています。次のコードを書きました。

string modelpath = @"D:\models\en-sent.bin";
java.io.FileInputStream modelInpStream = new java.io.FileInputStream(modelpath);
SentenceModel model = new SentenceModel(modelInpStream);
SentenceDetectorME sentenceDetector = new SentenceDetectorME(model);

しかし、次の行で TypeInitializationException が発生しました。

SentenceModel model = new SentenceModel(modelInpStream);

例外メッセージ:

TypeInitializationException was unhandled
'java.nio.charset.StandardCharsets' の型初期化子が例外をスローしました。

IKVM Charsets dll を追加しましたが、それでも機能しません。

4

1 に答える 1

1

すべての IKVM.OpenJDK.*.dll ファイルがアプリケーションの bin ディレクトリにあることを確認してください。Visual Studio は、参照されているすべてのアセンブリを常にコピーするとは限りません (それらが "使用" されていない場合)。

もう 1 つの提案は、(Java の観点から) 完全な例外を出力することです。それは次のようになります。

using ikvm.extensions;  // make the Exception extension methods available

try {
  ...
} catch (Exception x) {
  x.printStackTrace();
}

これにより、TypeInitializationException の根本的な原因に関する詳細情報が得られるはずです。

于 2013-02-28T07:37:37.080 に答える