问题
I have an existing Spring boot
App that i build through gradle
. All these days I have been using JDK / JRE 8
and now I am trying to use JDK-11
So to check the Compatability, I am setting the JAVA_HOME
to JDK-11
but trying to compile in Java 8
mode
I added the below block in my build.gradle
compileJava {
targetCompatibility = '1.8'
}
and then I set JAVA_HOME
explicitly set JAVA_HOME=C:\Users\arun\Desktop\jdk-11.0.1
and then execute gradlew clean build
But I am stopped with the below exception
> 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
How to point my JAVA_HOME
to JDK-11
but still execute it in Java-8
mode ?
回答1:
I'd say :
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
Because the default value of sourceCompatibility is the version of the current JVM in use.
source : https://docs.gradle.org/current/userguide/java_plugin.html
回答2:
you need to set the sourceCompatibility too.
See this post here Gradle, "sourceCompatibility" vs "targetCompatibility"?
回答3:
As of Java 9 you can use the --release N option to cross-compile with Gradle. Setting the sourceCompatibility and targetCompatibility is not enough because in that case you need to set the bootClasspath to JDK N too. See What is the --release flag in the Java 9 compiler? for more details.
Instead, use the Java 9+ "--release" compilerArg like this:
compilerArgs.addAll(['--release', '8'])
https://docs.gradle.org/current/dsl/org.gradle.api.tasks.compile.CompileOptions.html
来源:https://stackoverflow.com/questions/54147275/move-to-openjdk-11-but-compile-in-java-8