Mac升级依赖后RoomProcessor编译版本不兼容问题求助
解决RoomProcessor类文件版本不兼容问题
问题背景
Mac环境下升级项目依赖后出现编译错误:androidx/room/RoomProcessor 由更高版本的Java Runtime(类文件版本55.0,对应Java 11)编译,当前Java Runtime仅支持识别最高52.0版本的类文件(对应Java 8)。
完整错误信息:
androidx/room/RoomProcessor has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
当前项目状态:
- Android Studio使用内置Java 11版本
- 已尝试修改编译兼容性为11至18、移除
jvmToolchain代码块,但问题未解决 - 项目级与模块级gradle配置如下:
项目级gradle文件
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.8.10' ext.hilt_version = '2.45' repositories { google() jcenter() // maven () } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() // maven() } } task clean(type: Delete) { delete rootProject.buildDir }
模块级gradle文件
plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-parcelize' id 'kotlin-kapt' id 'com.google.dagger.hilt.android' // id 'dagger.hilt.android.plugin' } kotlin { jvmToolchain { languageVersion.set(JavaLanguageVersion.of(8)) } } //apply plugin: 'kotlin-kapt' android { compileSdk 33 buildToolsVersion '33.0.1' defaultConfig { applicationId "com.plcoding.multipleroomtables" minSdkVersion 21 targetSdkVersion 33 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } kapt { correctErrorTypes true } } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' implementation "androidx.activity:activity-ktx:1.6.1" implementation "androidx.fragment:fragment-ktx:1.5.5" implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3' // Room //implementation "androidx.room:room-runtime:2.2.5" //kapt "androidx.room:room-compiler:2.2.5" implementation "androidx.room:room-runtime:2.5.0" annotationProcessor "androidx.room:room-compiler:2.5.0" kapt 'androidx.room:room-compiler:2.5.0' // Kotlin Extensions and Coroutines support for Room implementation "androidx.room:room-ktx:2.5.0" // Coroutines implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' // Coroutine Lifecycle Scopes implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.0" // Hilt dependencies implementation "com.google.dagger:hilt-android:$hilt_version" kapt "com.google.dagger:hilt-android-compiler:$hilt_version" // implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03" kapt "androidx.hilt:hilt-compiler:1.0.0" // For instrumentation tests androidTestImplementation 'com.google.dagger:hilt-android-testing:2.45' kaptAndroidTest 'com.google.dagger:hilt-compiler:2.45' // For local unit tests testImplementation 'com.google.dagger:hilt-android-testing:2.45' kaptTest 'com.google.dagger:hilt-compiler:2.45' }
解决方案
方案一:统一构建工具的Java版本为11(推荐)
Room 2.5.0及以上版本的编译器要求使用Java 11及以上版本构建,因此需要确保gradle构建过程使用Java 11,而非仅IDE配置为Java 11。
- 修改模块级gradle的
jvmToolchain配置:kotlin { jvmToolchain { languageVersion.set(JavaLanguageVersion.of(11)) } } - 更新模块级gradle的
compileOptions与kotlinOptions:compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '11' } - 确认Android Studio的Gradle JDK配置:
- 打开
File > Settings > Build, Execution, Deployment > Build Tools > Gradle - 将
Gradle JDK选择为Android Studio内置的Java 11(路径通常为Applications/Android Studio.app/Contents/jbr/Contents/Home)
- 打开
- 清理并重新构建项目:执行终端命令
./gradlew clean build
方案二:降级Room版本到兼容Java 8的版本
如果暂时无法升级构建Java版本,可将Room降级到2.4.3及以下版本(该版本的编译器基于Java 8编译):
修改模块级gradle中的Room依赖:
// Room implementation "androidx.room:room-runtime:2.4.3" kapt "androidx.room:room-compiler:2.4.3" // Kotlin Extensions and Coroutines support for Room implementation "androidx.room:room-ktx:2.4.3"
同时移除重复的annotationProcessor "androidx.room:room-compiler:2.5.0"配置(kapt已包含注解处理器功能,重复配置可能引发冲突)
内容的提问来源于stack exchange,提问作者user1743524
相关产品推荐
相关产品推荐

