即使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 存在于类路径中
即使在构建路径中使用 ojdbc14.jar,Class.forName("oracle.jdbc.driver.OracleDriver") 也会得到 ClassNotFound