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 未处理
“java.nio.charset.StandardCharsets”的类型初始化程序引发了异常。

我已经添加了 IKVM Charsets dll,但它仍然不起作用。

4

1 回答 1

1

确保所有 IKVM.OpenJDK.*.dll 文件都在您的应用程序 bin 目录中。Visual Studio 并不总是复制所有引用的程序集(如果它们没有“使用”)。

另一个建议是尝试打印完整的异常(从 Java 角度来看)。事情是这样的:

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

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

这应该提供有关 TypeInitializationException 根本原因的更多信息。

于 2013-02-28T07:37:37.080 回答