Próbuję zaimportować projekt Gradle w IntelliJ IDEA z lokalnym Gradle distrib i coraz StackTrace z następującym komunikatem: Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'
. Czy ktoś mógłby wyjaśnić, proszę, jaki może być powód?
java
intellij-idea
gradle
Wasilij Własow
źródło
źródło
Odpowiedzi:
Oto, co u mnie zadziałało (Intellij Idea 2018.1.2):
1) Przejdź do: File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle
2) Gradle JVM: przejdź do wersji 1.8
3) Ponownie uruchom zadanie gradle
źródło
Dla IntelliJ 2019:
Intellij IDEA -> Preferencje -> Kompilacja, wykonanie, wdrażanie -> Narzędzia kompilacji -> Gradle -> Gradle JVM
Wybierz odpowiednią wersję.
źródło
W przypadku IntelliJ 2019, JDK 13 i gRPC:
Intellij IDEA -> Preferencje -> Kompilacja, wykonanie, wdrażanie -> Narzędzia kompilacji -> Gradle -> Gradle JVM
i wybierz odpowiednią wersję .
może być również konieczne dodanie poniższej linii w zależnościach build.gradle
compileOnly group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'
źródło
Wreszcie zaimportowałem mój projekt Gradle. Oto kroki:
JAVA_HOME
na JDK 8 (poprzednio była siódma), ponieważ eksperymentując odkryłem, że Gradle Wrapper może przetworzyć projekt tylko z JDK 8 .org.gradle.java.home
zmienną) w katalogu .gradle użytkownika systemu Windows, ponieważ, jak sądziłem, nie przyniosło to żadnej dodatkowej wartości do Gradle.źródło
echo $JAVA_HOME
aby sprawdzić). Zmień JAVA_HOME w całym systemie lub rozpocznij zaćmienie za pomocą,JAVA_HOME=/path/to/jdk8 eclipse
aby złagodzić ten problemPonieważ musiałem skompilować jakieś źródła z kompatybilnością 7, z powodu jakiegoś starszego systemu i napotkałem ten sam problem. Dowiedziałem się, że w konfiguracji gradle tam są dwie opcje ustawione na java 8
sourceCompatibility = 1.8 targetCompatibility = 1.8
przełączenie ich na 1.7 rozwiązało problem za mnie, utrzymując JAVA_HOME wskazując na zainstalowany JDK-7
sourceCompatibility = 1.7 targetCompatibility = 1.7
źródło
Pracowały dla mnie:
źródło
Miałem bardzo podobny problem, ale dla wyższych wersji Java:
$ ./gradlew clean assemble ... <other normal Gradle output> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.
Zauważyłem, że zadanie się powiodło, gdy uruchomiłem za pomocą InteliJ. Dodanie pliku (na tym samym poziomie co build.gradle) o nazwie
.java-version
rozwiązało mój problem:# .java-version 11.0.3
źródło
musisz zmienić -> sourceCompatibility = '1.7' w build.Gradle
źródło
Z innych odpowiedzi widzę więc, że istnieje kilka sposobów radzenia sobie z tym. Ale ja w to nie wierzę. Trzeba to zredukować w jeden sposób. Uwielbiam IDE, ale jeśli wykonam kroki IDE podane w różnych odpowiedziach, wiem, że nie jest to podstawowa algebra. Mój błąd wyglądał następująco:
* What went wrong: Execution failed for task ':compileJava'. > Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.
A sposób na naukowe rozwiązanie tego problemu to:
Aby zmienić z:
java { sourceCompatibility = JavaVersion.toVersion('11') targetCompatibility = JavaVersion.toVersion('11') }
zostać:
java { sourceCompatibility = JavaVersion.toVersion('8') targetCompatibility = JavaVersion.toVersion('8') }
Metoda naukowa to ta, która jest otwarta na argumentację i dotyczy wspólnych mianowników.
źródło
Chociaż to pytanie dotyczy konkretnie IntelliJ, był to pierwszy wynik, jaki otrzymałem w Google, więc uważam, że wielu użytkowników Eclipse może mieć ten sam problem podczas korzystania z Buildship.
Możesz ustawić swoją maszynę Gradle JVM w Eclipse, przechodząc do Gradle Tasks (w widoku domyślnym, na dole, w pobliżu konsoli), klikając prawym przyciskiem myszy określone zadanie, które próbujesz uruchomić, i klikając opcję „Otwórz konfigurację uruchamiania Gradle ... ”i przechodząc do zakładki Java Home i wybierając odpowiednią maszynę JVM dla swojego projektu.
źródło