Intereting Posts
Android с использованием ресурсов массива xml Расширение атрибута в стилях в Android Получить вызов от какой-либо другой деятельности WebView в фрагмент (android.support.v4) SERVICE_VERSION_UPDATE_REQUIRED и Google Play устарели при интеграции Google Plus в android Не удается завершить установку из-за конфликтной зависимости. Местоположение Android SDK не настроено в настройках Статистика загрузки фонограмм Android Добавление действия видимо только в определенных приложениях в ACTION_SEND? Android Intent.ACTION_SCREEN_OFF и Intent.ACTION_USER_PRESENT, как зарегистрировать его Как завершить все действия, кроме первой активности? Изменение фонового изображения приложения Как играть в icmp ping на android Адаптация Повторная настройка ответов с использованием GSON Android – макет панели инструментов со статичным фоном, предназначенным только для значка Как сопоставить взвешенный LinearLayout с макетом ограничений

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, который содержит этот класс

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