Gradle - Plattform: 'Java SE 8' konnte nicht als Toolkette verwendet werden: 'JDK 7 (1.7)'

123

Ich versuche, ein Gradle-Projekt in Intellij Idea mit lokaler Gradle-Distribution zu importieren und Stacktrace mit der folgenden Meldung zu erhalten : Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'. Könnte jemand bitte erklären, was der Grund sein könnte?

Vasiliy Vlasov
quelle
Welche JDK-Version verwenden Sie? versuchen Sie das gleiche wie in graddle definiert
Elasticsearch Ninja
Ich habe den Pfad zu demselben JDK sowohl zu Gradle (über gradle.properties) als auch in der Idea-Projektstruktur festgelegt. Ist es das, was du meintest? Habe ich etwas vergessen?
Vasiliy Vlasov
Ja, hat es danach funktioniert?
Elasticsearch Ninja
1
Unglücklicherweise nicht.
Vasiliy Vlasov
Können Sie den Screenshot mit dem IntelliJ Level SDK hinzufügen?
Elasticsearch Ninja

Antworten:

270

Das hat bei mir funktioniert (Intellij Idea 2018.1.2):

1) Navigieren Sie zu: Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Build-Tools -> Gradle

2) Gradle JVM: Wechsel zu Version 1.8

3) Führen Sie die Gradle-Aufgabe erneut aus

Mahesh
quelle
4
Es gibt keine solche Option in IntelliJ 2018.1.6 (Community Edition)
Kai
12
Navigieren Sie auf dem Mac zu "IntelliJ Idea" -> "Preferences" -> "Build, Execution, Deployment" -> "Build Tools" -> "Gradle"
Gubatron
2
Ich bin wieder auf dieses Problem gestoßen ... nachdem ich es schon einmal hochgestuft habe, wer weiß wie lange her ... ++
beauXjames
57

Für IntelliJ 2019:

Intellij IDEA -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Gradle -> Gradle JVM

Wählen Sie die richtige Version.

François Gaudin
quelle
31

Für IntelliJ 2019, JDK 13 und gRPC:

Intellij IDEA -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Gradle -> Gradle JVM

und Wählen Sie die richtige Version .

Möglicherweise müssen Sie in Ihren build.gradle- Abhängigkeiten auch die folgende Zeile hinzufügen

compileOnly group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'
Aheza Wunsch
quelle
25

Schließlich habe ich mein Gradle-Projekt importiert. Dies sind die Schritte:

  1. Ich wechselte von der lokalen Gradle-Distribution zu Intellij Idea Gradle Wrapper (Gradle-2.14).
  2. Ich habe die Systemvariable JAVA_HOMEauf JDK 8 verwiesen (es war zuvor die 7.), da ich durch Experimente herausgefunden hatte, dass Gradle Wrapper das Projekt nur mit JDK 8 verarbeiten kann .
  3. Ich habe die zuvor manuell erstellte Datei gradle.properties (mit org.gradle.java.homeVariable) im Windows-Benutzerverzeichnis .gradle gelöscht, da Gradle vermutlich keinen zusätzlichen Wert erhalten hat.
Vasiliy Vlasov
quelle
2
In Eclipse hatte ich auch dieses Problem, da auf meinem System die env-Variable JAVA_HOME auf ein JDK7 gesetzt war ( echo $JAVA_HOMEzur Überprüfung ausführen ). Ändern Sie das JAVA_HOME systemweit oder starten Sie Eclipse mit JAVA_HOME=/path/to/jdk8 eclipse, um dieses Problem zu beheben
Enkelkind
7

Da musste ich wegen eines Legacy-Systems eine Quelle mit 7-Kompatibilität kompilieren und stieß auf das gleiche Problem. Ich fand heraus, dass in der Gradle-Konfiguration dort zwei Optionen auf Java 8 gesetzt waren

sourceCompatibility = 1.8
targetCompatibility = 1.8

Das Umschalten auf 1.7 löste das Problem für mich und ließ JAVA_HOME auf das installierte JDK-7 verweisen

sourceCompatibility = 1.7
targetCompatibility = 1.7
Xtroce
quelle
2

Folgendes hat bei mir funktioniert:

  1. Gehen Sie zur oberen rechten Ecke von IntelliJ -> klicken Sie auf das Symbol
  2. Wählen Sie im Fenster Projektstruktur -> Projekt auswählen -> Wählen Sie im Projekt-SDK die richtige Version aus -> Klicken Sie auf Übernehmen -> Klicken Sie auf OK
Mira Kabra
quelle
2

Ich hatte ein sehr verwandtes Problem, aber für höhere Java-Versionen:

$ ./gradlew clean assemble

... <other normal Gradle output>

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

Ich habe festgestellt, dass die Aufgabe bei der Ausführung mit InteliJ erfolgreich war. Das Hinzufügen einer Datei (dieselbe Ebene wie build.gradle) mit dem Namen hat .java-versionmein Problem behoben:

 # .java-version
 11.0.3
Adan Amarillas
quelle
1

Und so sehe ich aus anderen Antworten, dass es verschiedene Möglichkeiten gibt, damit umzugehen. Aber ich glaube das nicht. Es muss auf eine Weise reduziert werden. Ich liebe IDE, aber wenn ich die IDE-Schritte befolge, die aus verschiedenen Antworten stammen, weiß ich, dass dies nicht die grundlegende Algebra ist. Mein Fehler sah aus wie:

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

Und der Weg, es wissenschaftlich zu lösen, ist:

vi build.gradle

So ändern Sie sich von:

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

werden:

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

Die wissenschaftliche Methode ist die Methode, die zur Argumentation offen ist und sich mit gemeinsamen Nennern befasst.

Eigenfeld
quelle
1

Sie müssen die -> sourceCompatibility = '1.7' in build.Gradle ändern

Yasiru Padmasiri
quelle