升级至Kotlin 1.4.10时遭遇module-info.class相关编译错误求助
解决Kotlin 1.4.10编译错误:找不到META-INF.versions.9.module-info
我之前升级Kotlin版本时也碰到过一模一样的问题,这个错误本质是Java 9+模块化系统(JPMS)和编译环境的兼容性冲突导致的,下面是几个亲测有效的解决方案:
1. 排除依赖中的模块信息文件
很多第三方库会附带META-INF/versions/9/module-info.class文件,当Kotlin 1.4.x编译器处理这类文件时,如果项目未启用模块化,就会触发找不到模块的错误。你可以在构建脚本中直接排除这些文件:
Android项目(build.gradle/kts)
android { packagingOptions { exclude 'META-INF/versions/9/module-info.class' } }
纯Kotlin JVM项目(build.gradle/kts)
tasks.withType<JavaCompile> { exclude("META-INF/versions/9/module-info.class") }
2. 调整Kotlin的目标JDK版本
Kotlin 1.4.x对JDK版本的处理逻辑有更新,如果你的项目目标JDK低于9,容易出现这类兼容性问题。可以明确指定Kotlin的目标JVM版本:
kotlin { jvmTarget = "1.8" // 也可以根据项目需求改为"11"或更高版本 }
注意:Android项目需要确保compileSdk和targetSdk版本与指定的JVM版本匹配。
3. 清理缓存并重新构建
有时候Gradle的缓存会残留旧版本的编译文件,导致奇怪的错误。执行以下命令清理缓存后重新构建:
# macOS/Linux ./gradlew clean build # Windows gradlew.bat clean build
4. 检查Kotlin与Gradle版本的兼容性
Kotlin 1.4.10需要Gradle 6.1及以上版本支持,如果你的Gradle版本过低,可能会出现编译流程中的文件处理异常。可以尝试升级Gradle到兼容版本(比如6.7或更高)。
内容的提问来源于stack exchange,提问作者Hoang
相关产品推荐
相关产品推荐

