THUCTC
THUCTC copied to clipboard
疑似冲突造成的bug:java.lang.NoSuchMethodError
我将完整的THUCTC的Demo项目作为moudle引入到自己的工程中,Demo在其自己的moudle中可以正常运行,但我将Demo的代码复制到自己的工程中时,会出现以下错误:
Exception in thread "main" java.lang.NoSuchMethodError: org.tartarus.snowball.Among.<init>(Ljava/lang/String;IILjava/lang/String;Lorg/tartarus/snowball/SnowballProgram;)V
at org.tartarus.snowball.ext.porterStemmer.<clinit>(porterStemmer.java:18)
at org.thunlp.language.english.EnglishWordSegment.<init>(EnglishWordSegment.java:28)
at org.thunlp.language.english.BilingualBigramWordSegment.segment(BilingualBigramWordSegment.java:44)
at org.thunlp.text.classifiers.LiblinearTextClassifier.classify(LiblinearTextClassifier.java:541)
at org.thunlp.text.classifiers.BasicTextClassifier.classifyText(BasicTextClassifier.java:477)
at hit.zhou.Classifacation.runLoadModelAndUse(Classifacation.java:65)
at hit.zhou.Classifacation.main(Classifacation.java:13)
我在检索解决方案的时候发现了类似的其他开源项目中的问题:https://github.com/Stratio/cassandra-lucene-index/issues/216#issue-183113466 他的解释是,高低版本的snowball冲突,并完成了修复。 我发现自己的工程中确实引入了高版本的snowball包,但是遗憾的是我并不能将它降低版本。高版本中的Amog类的构造方法发生了改变,造成了这个错误。 我花了几分钟的时间将org.thunlp中的代码改造了一下,实际上做的工作就是更改了一下类的命名。希望能够提醒代码的维护者和仍在使用代码的人。
我也遇上了相同的问题,原因是自己项目中导入了Lucene的snowball ,解决方案 修改THUCTC工程中snowball 包路径,重新打成jar包,再引入自己工程即可。THX!