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?
java
intellij-idea
gradle
Vasiliy Vlasov
quelle
quelle
Antworten:
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
quelle
Für IntelliJ 2019:
Intellij IDEA -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Gradle -> Gradle JVM
Wählen Sie die richtige Version.
quelle
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'
quelle
Schließlich habe ich mein Gradle-Projekt importiert. Dies sind die Schritte:
JAVA_HOME
auf 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 .org.gradle.java.home
Variable) im Windows-Benutzerverzeichnis .gradle gelöscht, da Gradle vermutlich keinen zusätzlichen Wert erhalten hat.quelle
echo $JAVA_HOME
zur Überprüfung ausführen ). Ändern Sie das JAVA_HOME systemweit oder starten Sie Eclipse mitJAVA_HOME=/path/to/jdk8 eclipse
, um dieses Problem zu behebenDa 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
quelle
Folgendes hat bei mir funktioniert:
quelle
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-version
mein Problem behoben:# .java-version 11.0.3
quelle
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:
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.
quelle
Sie müssen die -> sourceCompatibility = '1.7' in build.Gradle ändern
quelle