2012-02-07 63 views
0

我在我的代码中使用了stanford解析器。我在项目中添加了所有相关的库。当我在控制台上运行我的代码时,它工作得很好。但在条命令创建源的“可运行罐子”的选项“复制所需的库到子文件夹旁边的生成JAR”,并运行相同的后PROMT它抛出一个错误:MaxentTagger中的NoSuchMethodError

Exception in thread "Thread-2" java.lang.NoSuchMethodError:
edu.stanford.nlp.process.DocumentPreprocessor.(Ljava/io/Reader;)V at edu.stanford.nlp.tagger.maxent.MaxentTagger.tokenizeText(MaxentTagger.java:852) at edu.stanford.nlp.tagger.maxent.MaxentTagger.tokenizeText(MaxentTagger.java:837) at I have provided all the required libraries in classpath. Also the method tokenizeText is present in the MaxentTagger. Please suggest some solution.

回答

1

这几乎可以肯定的手段您已将解析器和标记器的不兼容版本组合在一起。例如,可能插入到jar文件中的标记器的版本与在命令行上运行代码时拾取的版本不同。你使用什么版本的解析器和标记器?从stacktrace中的行号看来,它不是最新的版本。

+0

我使用的是maxent-2.5.2和stanford-parser-2010-08-20,它们应该是兼容的,因为它们在控制台上工作得很好。我也复制了可运行JAR库中的相同罐子。 – 2012-02-10 09:48:25

+1

?? “maxent-2.5.2”不是我们的POS tagger的版本号,但是您显示的stacktrace显然来自stanford pos tagger。但是,此信息确实使问题更加清楚:在2010和2011版工具之间,对DocumentPreprocessor的API进行了不兼容的更改。特别是,增加了一个带有Reader参数的构造函数。您的(相当)当前版本的标记器正在调用该构造器,但2010版解析器jar中的DocumentPreprocessor类没有它。一般来说,您需要使用兼容的解析器和标记器版本。 – 2012-02-13 05:31:40

相关问题