Перейдите к OpenJDK-11, но скомпилируйте в Java 8
У меня есть существующий 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
Режим?
2 ответа
Я бы сказал:
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
Поскольку значением по умолчанию sourceCompatibility является версия текущей используемой JVM.
источник: https://docs.gradle.org/current/userguide/java_plugin.html
Вам также нужно установить sourceCompatibility.
Смотрите этот пост здесь Gradle, "sourceCompatibility" против "targetCompatibility"?
Начиная с Java 9 вы можете использовать опцию --release N для кросс-компиляции с Gradle. Установка sourceCompatibility и targetCompatibility недостаточна, потому что в этом случае вам также нужно установить для bootClasspath значение JDK N. См. Что такое флаг --release в компиляторе Java 9? Больше подробностей.
Вместо этого используйте компилятор Java 9+ "--release" следующим образом:
compilerArgs.addAll (['- release', '8'])
https://docs.gradle.org/current/dsl/org.gradle.api.tasks.compile.CompileOptions.html