Как запустить Lucene на Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как запустить Lucene на Android?

Сообщение Anonymous »

Я пытаюсь использовать библиотеку Apache Lucene (версия 9.9.1) в моем приложении Android. Вот соответствующие части моего файла build.gradle.kts :

Код: Выделить всё

android {
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}

dependencies {
// Lucene
implementation("org.apache.lucene:lucene-core:9.9.1")

// Core library desugaring
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
}
< /code>
Я использую Java 17 и отсугаю основную библиотеку, чтобы получить расширенные функции Java в соответствии с документацией.val indexDirectory: Directory = FSDirectory.open(indexPath)
< /code>
вызывает следующую ошибку: < /p>
FATAL EXCEPTION: DefaultDispatcher-worker-1
Process: com.example.myapp, PID: 2444
java.lang.NoSuchMethodError: No static method version()Ljava/lang/Runtime$Version; in class Ljava/lang/Runtime; or its super classes (declaration of 'java.lang.Runtime' appears in /apex/com.android.art/javalib/core-oj.jar)
at org.apache.lucene.util.Constants.(Constants.java:40)
at org.apache.lucene.store.FSDirectory.open(FSDirectory.java:161)
at org.apache.lucene.store.FSDirectory.open(FSDirectory.java:156)
...
Метод java.lang.runtime.version () не мог быть найден ...
Из того, что я прочитал в требованиях, Лусене работает на Java 11 или выше. Это и ошибка предполагает мне, что в Java на Android отсутствует некоторые функции, необходимые для запуска Lucene, особенно метод 'version ()' из ошибки. < /P>
Что я могу сделать в этот момент? Стоит ли понизить версию Lucene до версии, стабильной Android (если она вообще есть)? Или есть какой -то лучший подход, о котором я не знаю? Пожалуйста, помогите!
Обновление: Я попытался заменить версию Lucene на 8.11.2 , 7.7.3 , 6.6.6 и 5.5.5 . Во всех этих версиях первая ошибка перестала происходить, но другая началась: < /p>

Код: Выделить всё

FATAL EXCEPTION: DefaultDispatcher-worker-2
Process: com.example.myapp PID: 5143
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/lang/ClassValue;
at org.apache.lucene.analysis.standard.StandardAnalyzer.createComponents(StandardAnalyzer.java:103)
at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:198)
at org.apache.lucene.document.Field.tokenStream(Field.java:574)
at org.apache.lucene.index.DefaultIndexingChain$PerField.invert(DefaultIndexingChain.java:740)
at org.apache.lucene.index.DefaultIndexingChain.processField(DefaultIndexingChain.java:447)
at org.apache.lucene.index.DefaultIndexingChain.processDocument(DefaultIndexingChain.java:403)
at org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:232)
at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:478)
at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1571)
at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1316)
...
Опять же, Android Java чего -то не хватает - на этот раз класс ClassValue ...
Очевидно, что ClassValue была добавлена в API 34 - ни в коем случае я не настраиваю minsdk на 34. Lucene просто не совместим?

Подробнее здесь: https://stackoverflow.com/questions/778 ... on-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»