我正在将Lucene从版本2迁移到7.7.1,并在升级Lucene搜索时面临以下问题。 即使包含了它所属的jar,也可以获取CommonTermsQuery的NoClassDefFoundError(lucene-queries-7.7.1.jar)。您能建议这里缺少什么吗?
错误日志:
_Apr 12, 2019 5:07:29 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path threw
exception [javax.servlet.ServletException: java.lang.NoClassDefFoundError:
org/apache/lucene/queries/CommonTermsQuery] with root cause
java.lang.NoClassDefFoundError: org/apache/lucene/queries/CommonTermsQuery
at org.apache.lucene.search.highlight.WeightedSpanTermExtractor.extract(WeightedSpanTermExtractor.java:149)
at org.apache.lucene.search.highlight.WeightedSpanTermExtractor.extract(WeightedSpanTermExtractor.java:112)
at org.apache.lucene.search.highlight.WeightedSpanTermExtractor.getWeightedSpanTerms(WeightedSpanTermExtractor.java:513)
at org.apache.lucene.search.highlight.QueryScorer.initExtractor(QueryScorer.java:218)
at org.apache.lucene.search.highlight.QueryScorer.init(QueryScorer.java:186)
at org.apache.lucene.search.highlight.Highlighter.getBestTextFragments(Highlighter.java:201)
at org.apache.lucene.search.highlight.Highlighter.getBestFragments(Highlighter.java:161)
at org.apache.lucene.search.highlight.Highlighter.getBestFragments(Highlighter.java:465)_
代码段:
...
TokenStream tokenStream = analyzer.tokenStream(searchField.toLowerCase(), new
StringReader(content));
preview = highlighter.getBestFragments(tokenStream, content, 3, "...");
...
答案 0 :(得分:0)
您需要将lucene-queries-7.7.1.jar添加到您的类路径中。 (顺便说一句-已存在较新版本-8.0.0)
答案 1 :(得分:0)
Eclipse是指较旧的jar。我做了以下事情来解决我的问题。 如果您已将jar添加到构建路径中,并且在引用的库中可见,则可以。
检查Eclipse缓存中是否存在jar:Workspace / .metadata / .plugins / org.eclipse.wst.server.core / tmp0 / wtpwebapps / project / WEB-INF / lib
然后转到 右键单击项目>属性>部署程序集:检查您的jar,如果缺少,则添加它。
清理生成项目。很好。