You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Android上运行Apache Lucene遇API兼容问题,求解决方案

Android下使用Apache Lucene的兼容性问题咨询

我尝试在Android应用中集成Apache Lucene 9.9.1库,相关的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")
}

我按照文档要求配置了Java 17并启用核心库脱糖以支持扩展Java特性,但调用val indexDirectory: Directory = FSDirectory.open(indexPath)时触发如下错误:

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.<clinit>(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()方法。虽然Lucene官方说明支持Java 11及以上版本,但Android的Java环境缺失该特性。

我尝试将Lucene版本降级至8.11.2、7.7.3、6.6.6和5.5.5,上述错误消失,但出现新的错误:

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)
    ...

错误提示找不到ClassValue类,该类仅在Android API 34及以上版本中提供,而我无法将应用的minSdkVersion设置为34。

请问是否有可行的解决方法?Lucene是否完全不兼容Android?


内容的提问来源于stack exchange,提问作者sweak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:15:12