Gradle 从哪个版本开始支持 Java 21?

Nol*_*uen 21 java gradle java-21

当尝试使用 Java 21 配置项目时,我收到错误:

不支持 Java。您的构建当前配置为使用 Java 21 和 Gradle 8.3。

不幸的是,目前官方文档中没有信息:https ://docs.gradle.org/current/userguide/compatibility.html

执行 Gradle 需要 8 到 20 之间的 Java 版本。尚不支持 Java 21 及更高版本。

Gradle 从哪个版本开始支持 Java 21?

Bas*_*que 17

当前的

要获得完整的 Java 21 支持,您可以使用Gradle 8.5。发行说明说:

在此版本中,Gradle 现在完全支持在 Java 21 上编译、测试和运行。

  • 我确实喜欢发行说明中指出尚不支持 Java 21 的原因:“目前,您无法在 Java 21 上运行 Gradle,因为 Kotlin 缺乏对 JDK 21 的支持。但是,预计未来版本将支持使用 Java 21 运行 Gradle。 ” (5认同)
  • @MJustin 补充一下:1.9.20(当前预览版,计划于 2023 年 12 月左右发布)Kotlin 版本已经与 JVM 21 兼容,所以我猜 2024 年初是 Gradle 的实际预期日期。 (5认同)

Gre*_*Bit 6

正如其他答案中提到的,Gradle 8.4 支持构建 Java 21 项目。

至于如何做到这一点:

  1. 在机器上安装 JDK21 并告诉 Gradle 使用它作为工具链。
    在 Gradle 构建文件(build.gradle 或 build.gradle.kts)中:

    java {
        toolchain {
            languageVersion = JavaLanguageVersion.of(21)
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    Gradle 应该会自动找到您的 JDK21 安装。

  2. 安装低于 21 的JDK 版本并使用它来执行 Gradle 任务:
    将 JAVA_HOME 变量指向此较低版本的 JDK 安装,或者将属性org.gradle.java.home(gradle.properties) 指向它。如果您使用 IntelliJ,则应该将设置“Gradle JVM”指向此 JDK。

要将 Gradle 升级到 8.4,请从gradle.org下载并手动安装,或者(最好)使用distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip.


说明:默认情况下,Gradle 使用运行它的相同 JDK 来编译源代码。显然,当您需要编译 Java 21 代码但最新的 Gradle 版本尚未在 Java 21 上运行时,这将不起作用。因此,您让 Gradle 在较低版本上运行(您的环境默认值 - java --version
返回的版本,或者 IntelliJ 的Gradle JVM选项中指定的其他 JDK或通过设置 org.gradle.java.home gradle.properties),但您指示它使用 21 JDK 来构建您的项目(编译、javadoc 生成等)。


Edit:尽管Gradle声称相反,但似乎(至少对于简单的项目)Gradle 8.4 已经能够在 Java 21 上运行。
如果遇到问题,请使用上面的步骤,但只需运行gradle build/就足够gradlew build了JDK21 和 Gradle 8.4(因此可以跳过步骤 2)。
从 Gradle 8.5 开始,应该正式支持直接在 JDK21 上运行 Gradle。