0

我正在将 Lucene 从版本 2 迁移到 7.7.1,并在升级 lucene 搜索时遇到以下问题。为 CommonTermsQuery 获取 NoClassDefFoundError,即使它所属的 jar 包含在内(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, "...");
...
4

2 回答 2

0

您需要将lucene-queries-7.7.1.jar添加到您的类路径中。(顺便说一句 - 新版本已经存在 - 8.0.0)

于 2019-04-13T06:21:35.100 回答
0

Eclipse 指的是一个较旧的罐子。我做了以下事情来解决我的问题。如果您已在构建路径中添加了 jar,并且它在引用的库中可见,那么。

  • 检查 jar 是否存在于 Eclipse 缓存中:Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/project/WEB-INF/lib

  • 然后转到右键单击项目 > 属性 > 部署程序集:检查您的 jar,如果缺少则添加它。

清理构建项目。它工作正常。

于 2019-04-15T22:23:08.713 回答