Intereting Posts
Использование пользовательского адаптера ListView со стандартными темами Android Устройство Android (за исключением примечания 2 галактики) не может получить UDP-пакеты Как скрыть текстовое изображение в SimpleAdapter Json разбор с gson возвращает нулевой объект Как найти последнюю активность, с которой текущая активность открывается в android? Потеря заголовка ActionBar при создании настраиваемого макета Не удалось найти связующее для интерфейса Как установить выбранные значения диалогового окна в TextViews во фрагменте Показать и скрыть кнопку воспроизведения через VideoView в Android SavedInstanceState всегда имеет значение null, но onSaveInstanceState () всегда называется ACCESS_FINE_LOCATION SecurityException, несмотря на указание разрешения в файле манифеста Как я могу изменить язык моего приложения Как поддерживать textView.setTextIsSelectable в более низких версиях Android? RunOnUiThread из сервиса Как изменить интервал LocationRequest

Java.lang.NoClassDefFoundError: org / apache / lucene / codecs / Codec

У меня есть проект, требующий Lucene ( 4.3.0 ), и добавьте следующие зависимости: lucene-core, lucene-analys-common, lucene-queries, lucene-queryparser.

И, добавив зависимость lucene-codecs, также получите ту же ошибку.

Но ядро ​​lucene-core содержит class Codec

—– начать исключение —–

 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 

—– исключение —–

    Интересные результаты приходят в Google.

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

    Согласно вышеизложенному, разработчик Android APK удаляет некоторые файлы в каталоге META-INF / services, который требуется Lucene. Они предлагают некоторые обходные пути, такие как добавление необходимых файлов из баков lucene непосредственно в APK через некоторые муравьиные задачи, выполняемые после завершения создания APK. Просто будьте осторожны, поскольку некоторые банки lucene используют одни и те же файлы в каталоге META-INF / services, и вы можете перезаписать их незадолго.

    Я бы предположил, что вы используете плагин android maven, поскольку они применили исправление для этого уже (см. https://code.google.com/p/maven-android-plugin/issues/detail?id=97 ). Просто используйте последнюю версию плагина (или любую версию выше 3.2.1).

    Кажется, что ваша проблема не в том, что класс Codec не найден, но другой класс (поставщик SPI) не найден (см. Caused by ). Если вы видите в описании пакета Lucene самое нижнее (см. Здесь ), этот класс объявляется поставщиком SPI в папке META-INF одной из ваших банок.

    Поэтому найдите свои банки, чтобы найти файл META-INF/services/org.apache.lucene.codecs.Codec , откройте его и посмотрите имя класса. Вам не хватает jar, который содержит этот класс

    Надеюсь, поможет