2012-02-07 69 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

相關問題