即使CommonTermsQuery包含在jar中我也能得到NoClassDefFoundError,我可以在构建路径中看到它。可能是什么问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了即使CommonTermsQuery包含在jar中我也能得到NoClassDefFoundError,我可以在构建路径中看到它。可能是什么问题?相关的知识,希望对你有一定的参考价值。

我正在将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, "...");
...
答案

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

另一答案

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

  • 检查eclipse缓存中是否存在jar:Workspace / .metadata / .plugins / org.eclipse.wst.server.core / tmp0 / wtpwebapps / project / WEB-INF / lib
  • 然后转到右键单击项目>属性>部署程序集:检查您的jar,如果它丢失则添加它。

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

以上是关于即使CommonTermsQuery包含在jar中我也能得到NoClassDefFoundError,我可以在构建路径中看到它。可能是什么问题?的主要内容,如果未能解决你的问题,请参考以下文章

即使所需的 JAR 在 Bundle-classpath 中,OSGI 类也不可见

NoClassDefFoundError 即使 Jar 存在于类路径中

构建包含专有库的maven项目[重复]

即使在构建路径中使用 ojdbc14.jar,Class.forName("oracle.jdbc.driver.OracleDriver") 也会得到 ClassNotFound

即使在添加 ojdbc14.jar 文件后,我也会收到 HTTP 错误 500

即使 grails-wrapper.jar 更新,Grails 也无法工作