Java 版本不兼容 Gradle 的问题解决方案

824 阅读2分钟

Could not compile initialization script 'C:...\ijMapper1.gradle'. > startup failed: General error during semantic analysis: Unsupported class file major version 65

此错误是由于 Java 版本与构建工具(如 Gradle/Groovy)的兼容性问题 导致的。"major version 65" 对应 Java 21,但当前工具链可能仅支持低版本 Java(如 Java 17 或更低)。以下是具体解决方案:


1. 确认 Java 版本与环境配置

  • 检查当前 JDK 版本
    java -version
    
    如果输出类似 openjdk 21.0.1,则表明使用了 Java 21。
  • 降级 JDK(可选):
    • 若需兼容旧版工具链,建议降级至 Java 17 或更低版本(Java 17 对应 major version 61)。
    • 通过环境变量 JAVA_HOMEPATH 指向目标 JDK 路径。

2. 升级构建工具链以支持 Java 21

根据错误日志,问题可能由以下原因引发:

  • Gradle 版本过低:Gradle 7.x 最高支持 Java 17,而 Gradle 8.3+ 开始支持 Java 21
  • Groovy 版本过低:Groovy 4.0+ 兼容 Java 17+,若项目中使用了旧版 Groovy(如 3.x),需升级依赖。

操作步骤

  1. 升级 Gradle
    • 修改 gradle-wrapper.properties 文件中的版本号:
      distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
      
    • 或通过命令行更新:
      ./gradlew wrapper --gradle-version=8.5
      
  2. 升级 Groovy 依赖(如适用):
    dependencies {
        implementation 'org.codehaus.groovy:groovy-all:4.0.15'
    }
    

3. 清理构建缓存

旧版本的构建缓存可能导致兼容性问题。执行以下命令清理并重新构建:

./gradlew clean           # 清理缓存
./gradlew --stop          # 停止守护进程
./gradlew --no-daemon     # 禁用守护进程(避免残留影响)

4. 检查 IDE 配置

  • IntelliJ/Android Studio
    • 确认 Project SDKGradle JDK 设置与目标版本一致(路径:File > Project Structure > Project/Platform Settings)。
    • 禁用 Gradle Daemon(路径:Settings > Build Tools > Gradle > Gradle Daemon)。

5. 其他可能性

  • 第三方插件兼容性:某些插件(如 Parboiled)可能尚未支持 Java 21,需检查其官方文档或升级至支持版本。
  • 脚本语法错误:检查 ijMapper1.gradle 文件是否存在语法错误(如无效的插件声明或方法调用)。

总结建议

  1. 优先升级工具链(Gradle 8.5 + Groovy 4.0 + Java 21),确保版本兼容性。
  2. 若无法升级,降级 Java 至 17 或更低版本,并调整构建配置。
  3. 清理缓存并检查 IDE 设置,避免残留配置干扰。

通过上述步骤,可解决因 Java 21 与旧版 Gradle/Groovy 不兼容导致的编译错误。