Gradle - Не вдалося націлити платформу: 'Java SE 8' за допомогою ланцюжка інструментів: 'JDK 7 (1.7)'


127

Я намагаюся імпортувати проект Gradle в IntelliJ Idea з місцевим Gradle і отримувати дистриб'ютор StackTrace з наступним повідомленням: Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'. Хтось може пояснити, будь ласка, що може бути причиною?


яку версію JDK ви використовуєте? спробуйте використати те саме, що визначено у graddle
Elasticsearch Ninja

Я поклав шлях до одного і того ж JDK як до Gradle (через gradle.properties), так і до структури проекту Idea. Це ти мав на увазі? Я щось пропустив?
Василь Власов

так, це працювало після цього?
Elasticsearch Ninja

1
На жаль, немає.
Василій Власов

Ви можете додати знімок екрана, що показує SDK рівня IntelliJ?
Elasticsearch Ninja

Відповіді:


277

Ось що мені вдалося (Intellij Idea 2018.1.2):

1) Перейдіть до: Файл -> Налаштування -> Збірка, виконання, розгортання -> Інструменти побудови -> Gradle

2) Gradle JVM: змінити на версію 1.8

3) Повторно запустіть завдання gradle


4
У IntelliJ 2018.1.6 (версія для спільноти) такої можливості немає
Кай,

13
На Mac перейдіть до "IntelliJ Idea" -> "Налаштування" -> "Створення, виконання, розгортання" -> "Інструменти побудови" -> "Gradle"
Gubatron

2
я знову зіткнувся з цією проблемою ... після того, як я вже одного разу підтримав її, хто знає, як давно ... ++
beauXjames

59

Для IntelliJ 2019:

Intellij IDEA -> Налаштування -> Створення, виконання, розгортання -> Інструменти побудови -> Gradle -> Gradle JVM

Виберіть правильну версію.


33

Для IntelliJ 2019, JDK 13 та gRPC:

Intellij IDEA -> Налаштування -> Створення, виконання, розгортання -> Інструменти побудови -> Gradle -> Gradle JVM

та Виберіть правильну версію .

можливо, вам також доведеться додати рядок нижче у залежностях build.gradle

compileOnly group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'

26

Нарешті я імпортував свій проект Gradle. Ось такі кроки:

  1. Я перейшов з локального дистрибутива Gradle на Intellij Idea Gradle Wrapper (gradle-2.14).
  2. Я вказав системну змінну JAVA_HOMEна JDK 8 (раніше вона була 7-м), оскільки експериментально з'ясував, що Gradle Wrapper може обробляти проект лише з JDK 8 .
  3. Я видалив раніше створений вручну файл gradle.properties (зі org.gradle.java.homeзмінною) в каталозі користувача .gradle користувача Windows, оскільки, як я здогадався, це не принесло додаткового значення Gradle.

3
У Eclipse у мене також була ця проблема, оскільки у моїй системі змінна JAVA_HOME env була встановлена ​​на JDK7 (запустити echo $JAVA_HOMEдля перевірки). Змініть загальносистемну систему JAVA_HOME або запустіть затемнення, JAVA_HOME=/path/to/jdk8 eclipseщоб пом'якшити цю проблему
онук,

7

Оскільки мені довелося скомпілювати якесь джерело із сумісністю 7, через якусь застарілу систему і зіткнулося з тією ж проблемою. Я виявив, що в конфігурації gradle там два варіанти встановлені у java 8

sourceCompatibility = 1.8
targetCompatibility = 1.8

переключення їх на 1.7 вирішило проблему для мене, зберігаючи JAVA_HOME вказуючи на встановлений JDK-7

sourceCompatibility = 1.7
targetCompatibility = 1.7

2

У мене працювало:

  1. Перейдіть у верхній правий кут IntelliJ -> клацніть піктограму
  2. У вікні Структура проекту -> Вибрати проект -> У SDK проекту виберіть правильну версію -> Клацніть Застосувати -> Клацніть ОК

2

У мене була дуже пов’язана проблема, але для вищих версій Java:

$ ./gradlew clean assemble

... <other normal Gradle output>

Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.

Я помітив, що завдання вдалося під час запуску за допомогою InteliJ. Додавання файлу (того самого рівня, що і build.gradle), .java-versionвирішене моєю проблемою:

 # .java-version
 11.0.3


0

І тому я бачу з інших відповідей, що існує кілька способів боротьби з цим. Але я не вірю в це. Це має бути зведено в один бік. Я люблю IDE, але, якщо я дотримуюся кроків IDE, наведених з різних відповідей, я знаю, що це не є основною алгеброю. Моя помилка виглядала так:

* What went wrong:
Execution failed for task ':compileJava'.
> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.

І спосіб науково вирішити це:

vi build.gradle

Щоб змінити з:

java {
    sourceCompatibility = JavaVersion.toVersion('11')
    targetCompatibility = JavaVersion.toVersion('11')
}

ставати:

java {
    sourceCompatibility = JavaVersion.toVersion('8')
    targetCompatibility = JavaVersion.toVersion('8')
}

Науковий метод - це той метод, який відкритий для аргументації та стосується загальних знаменників.


0

Хоча це питання конкретно задає питання IntelliJ, це був перший результат, який я отримав у Google, тому я вважаю, що багато користувачів Eclipse можуть мати таку ж проблему з використанням Buildship.

Ви можете встановити свій Gradle JVM в Eclipse, перейшовши до Gradle Tasks (у поданні за замовчуванням, унизу біля консолі), клацнувши правою кнопкою миші конкретне завдання, яке ви намагаєтеся виконати, натиснувши "Відкрити конфігурацію запуску Gradle ... "і перехід на вкладку" Домашня сторінка Java "і вибір правильної JVM для вашого проекту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.