Перейдите к 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

Другие вопросы по тегам