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

升级依赖后RoomProcessor Java版本不兼容问题如何解决?

解决Room Processor与Java版本不兼容问题

结论:必须升级本地Java Runtime到Java 17

Room 2.6.0-alpha02的RoomProcessor注解处理器是用Java 17编译的(类文件版本61.0),而Java 11的运行时最高仅支持类文件版本55.0,Java 11无法加载该处理器,所以必须升级到Java 17。

具体解决步骤

  • 升级本地Java环境到Java 17
    可选择Adoptium、Oracle JDK,或直接使用Android Studio自带的JDK(Android Studio Hedgehog及以上版本默认搭载Java 17)。安装完成后,执行java -version验证版本号为17。

  • 调整Gradle配置(保留编译目标为Java 11的同时适配处理器)
    项目的compileOptions设为Java 11是控制代码编译的目标版本,和注解处理器的运行环境不冲突。可在gradle配置里明确指定处理器的运行参数,同时保留原有编译目标:

    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_11
            targetCompatibility JavaVersion.VERSION_11
        }
        kotlinOptions {
            jvmTarget = "11"
        }
        // 为注解处理器配置必要参数
        compileOptions.annotationProcessorOptions {
            compilerArgumentProviders.add(new CommandLineArgumentProvider() {
                @Override
                public Iterable<String> asArguments() {
                    return Arrays.asList("--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED");
                }
            })
        }
    }
    

    另外,在项目根目录的gradle.properties中可指定Gradle使用的JDK路径:

    org.gradle.java.home=/path/to/your/java17
    
  • 验证修复效果
    先执行./gradlew clean清理缓存,再运行./gradlew :module:hiltJavaCompileAppDebug任务,确认版本冲突报错消失。也可检查Android Studio的项目结构(File > Project Structure > SDK Location),确保JDK Location指向Java 17。

补充说明

项目指定Java 11仍需Java 17的原因:compileOptions控制的是代码最终编译成兼容Java 11的字节码,而注解处理器是编译阶段运行的工具程序,它自身的编译版本要求更高的JVM才能运行,两者互不影响,最终打包的应用依然可在支持Java 11的环境运行。

内容的提问来源于stack exchange,提问作者Michał Dobi Dobrzański

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:35:01