【问题标题】:Move to OpenJDK-11 but compile in Java 8迁移到 OpenJDK-11 但在 Java 8 中编译
【发布时间】:2019-06-06 10:05:10
【问题描述】:

我有一个现有的 Spring boot 应用程序,我通过 gradle 构建。这些天我一直在使用JDK / JRE 8,现在我正在尝试使用JDK-11

为了检查兼容性,我将JAVA_HOME 设置为JDK-11,但尝试在Java 8 模式下编译

我在build.gradle 中添加了以下块

compileJava {
    targetCompatibility = '1.8'
}

然后我明确设置JAVA_HOME set JAVA_HOME=C:\Users\arun\Desktop\jdk-11.0.1

然后执行gradlew clean build

但我因以下异常而停止了

> Configure project :
Build Version = build-182-ga03cf6c

> Task :compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> warning: source release 11 requires target release 11

如何将我的JAVA_HOME 指向JDK-11 但仍以Java-8 模式执行?

【问题讨论】:

  • 理想情况下,它们现在应该像 Maven 一样提供--release 等效参数选择。 <release>

标签: java gradle java-8 java-11


【解决方案1】:

我会说:

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

因为sourceCompatibility的默认值是当前使用的JVM的版本。

来源:https://docs.gradle.org/current/userguide/java_plugin.html

【讨论】:

    【解决方案2】:

    您还需要设置 sourceCompatibility。

    在此处查看此帖子 Gradle, "sourceCompatibility" vs "targetCompatibility"?

    【讨论】:

      【解决方案3】:

      从 Java 9 开始,您可以使用 --release N 选项与 Gradle 进行交叉编译。设置 sourceCompatibility 和 targetCompatibility 是不够的,因为在这种情况下,您还需要将 bootClasspath 设置为 JDK N。详情请见What is the --release flag in the Java 9 compiler?

      改为使用 Java 9+“--release”compilerArg,如下所示:

      compilerArgs.addAll(['--release', '8'])

      https://docs.gradle.org/current/dsl/org.gradle.api.tasks.compile.CompileOptions.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-09
        • 2021-02-24
        • 2020-03-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2019-05-29
        相关资源
        最近更新 更多