移至OpenJDK-11,但在Java 8中进行编译

时间:2019-01-11 13:13:46

标签: java gradle java-8 java-11

我有一个通过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模式执行它?

3 个答案:

答案 0 :(得分:6)

我会说:

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

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

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

答案 1 :(得分:5)

您还需要设置sourceCompatibility。

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

答案 2 :(得分:0)

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

请改为使用Java 9 +“-release”编译器Arg:

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

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