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