gpt4 book ai didi

java.lang.NoClassDefFoundError : org/apache/lucene/codecs/Codec 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:02 27 4
gpt4 key购买 nike

我有一个项目需要 Lucene(4.3.0) 并添加以下依赖项:lucene-core,lucene-analyzers-common,lucene-queries,lucene-queryparser.

并且,添加lucene-codecs依赖后,同样报错。

但是,lucene-core jar 包含 Codec class

-----开始异常-----

I/TestRunner(2443): java.lang.NoClassDefFoundError: org/apache/lucene/codecs/Codec
I/TestRunner(2443): at org.apache.lucene.index.LiveIndexWriterConfig.<init>(LiveIndexWriterConfig.java:118)
I/TestRunner(2443): at org.apache.lucene.index.IndexWriterConfig.<init>(IndexWriterConfig.java:144)
I/TestRunner(2443): at com.my.search.SearchIndexManager.newWriter(SearchIndexManager.java:301)
I/TestRunner(2443): at com.my.search.SearchIndexManager.addIndexState(SearchIndexManager.java:95)
I/TestRunner(2443): at com.my.SearchOperation.addIndexer(SearchOperation.java:68)
I/TestRunner(2443): at com.my.test.SearchOperationTest.testSearchWithFilter(SearchOperationTest.java:208)
I/TestRunner(2443): at java.lang.reflect.Method.invokeNative(Native Method)
I/TestRunner(2443): at java.lang.reflect.Method.invoke(Method.java:511)
I/TestRunner(2443): at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
I/TestRunner(2443): at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
I/TestRunner(2443): at junit.framework.TestCase.runBare(TestCase.java:134)
I/TestRunner(2443): at junit.framework.TestResult$1.protect(TestResult.java:115)
I/TestRunner(2443): at junit.framework.TestResult.runProtected(TestResult.java:133)
I/TestRunner(2443): at junit.framework.TestResult.run(TestResult.java:118)
I/TestRunner(2443): at junit.framework.TestCase.run(TestCase.java:124)
I/TestRunner(2443): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
I/TestRunner(2443): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
I/TestRunner(2443): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
I/TestRunner(2443): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
I/TestRunner(2736): Caused by: java.lang.IllegalArgumentException: A SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene42' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath.The current classpath supports the following names: []
I/TestRunner(2736): at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:109)
I/TestRunner(2736): at org.apache.lucene.codecs.Codec.forName(Codec.java:95)
I/TestRunner(2736): at org.apache.lucene.codecs.Codec.<clinit>(Codec.java:122)
I/TestRunner(2736): ... 19 more

-----结束异常-----

最佳答案

谷歌搜索出现了一些有趣的结果。

https://issues.apache.org/jira/browse/LUCENE-4204

根据上述问题,Android APK 构建器删除了 Lucene 所需的 META-INF/services 目录中的一些文件。他们提出了一些解决方法,例如通过在 APK 构建器完成后完成的一些 ant 任务将必要的文件从 lucene jar 直接添加到 APK。请小心,因为一些 lucene jar 在 META-INF/services 目录中使用相同的文件,您可能会不必要地覆盖它们。

我实际上建议您使用 android maven 插件,因为他们已经为此应用了修复程序(参见 https://code.google.com/p/maven-android-plugin/issues/detail?id=97)。只需使用最新版本的插件(或 3.2.1 以上的任何版本)。

关于java.lang.NoClassDefFoundError : org/apache/lucene/codecs/Codec 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17770451/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com