web-dev-qa-db-fra.com

Déplacez-vous à OpenJDK-11 mais compiler dans Java 8

J'ai un _ existant Spring boot App que je construis sur gradle. Tous ces jours où j'ai utilisé JDK / JRE 8 Et maintenant j'essaie d'utiliser JDK-11

Donc, pour vérifier la compatibilité, je définit le Java_HOME à JDK-11 mais essayant de compiler dans Java 8 mode

J'ai ajouté le bloc ci-dessous dans mon build.gradle

compileJava {
    targetCompatibility = '1.8'
}

et puis je mets Java_HOME explicitement set Java_HOME=C:\Users\arun\Desktop\jdk-11.0.1

puis exécuter gradlew clean build

Mais je suis arrêté avec l'exception ci-dessous

> 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

Comment pointer mon Java_HOME à JDK-11 mais l'exécute toujours dans Java-8 mode?

9
Arun

A partir de Java 9 Vous pouvez utiliser l'option --Release N pour inter-compiler avec la graderie. Réglage de la peauCompatibility et de la cibleCompatibilité ne suffit pas parce que dans ce cas, vous devez définir le bootclasspath vers JDK N aussi. Voir Quel est le drapeau -Release dans le Java 9? Pour plus de détails.

Au lieu de cela, utilisez le Java 9+ "--Release" Compilerarg comme ceci:

compilerargs.addall (['- libération', '8'])

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

2
whitestryder