Gradle - nie można kierować na platformę: „Java SE 8” przy użyciu łańcucha narzędzi: „JDK 7 (1.7)”


127

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?


której wersji JDK używasz? spróbuj użyć tego samego, co zdefiniowano w graddle
Elasticsearch Ninja

Podałem ścieżkę do tego samego JDK zarówno w Gradle (przez gradle.properties), jak iw strukturze projektu Idea. Czy to miałeś na myśli? Czy coś przegapiłem?
Wasilij Własow

tak, czy potem to zadziałało?
Elasticsearch Ninja

1
Niestety nie.
Wasilij Własow

czy możesz dodać zrzut ekranu przedstawiający zestaw SDK poziomu intelliJ?
Elasticsearch Ninja

Odpowiedzi:


277

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


4
Nie ma takiej opcji w IntelliJ 2018.1.6 (edycja społecznościowa)
Kai

13
Na komputerze Mac przejdź do „IntelliJ Idea” -> „Preferencje” -> „
Kompiluj, uruchamiaj, wdrażaj

2
Wpadłem na ten problem po raz kolejny ... I już upvoted go kiedyś, kto wie, jak dawno temu ... ++
beauXjames

59

Dla IntelliJ 2019:

Intellij IDEA -> Preferencje -> Kompilacja, wykonanie, wdrażanie -> Narzędzia kompilacji -> Gradle -> Gradle JVM

Wybierz odpowiednią wersję.


33

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'

26

Wreszcie zaimportowałem mój projekt Gradle. Oto kroki:

  1. Przerzuciłem się z lokalnej dystrybucji Gradle na Intellij Idea Gradle Wrapper (gradle-2.14).
  2. Wskazałem zmienną systemową JAVA_HOMEna JDK 8 (poprzednio była siódma), ponieważ eksperymentując odkryłem, że Gradle Wrapper może przetworzyć projekt tylko z JDK 8 .
  3. Usunąłem wcześniej ręcznie utworzony plik gradle.properties (ze org.gradle.java.homezmienną) w katalogu .gradle użytkownika systemu Windows, ponieważ, jak sądziłem, nie przyniosło to żadnej dodatkowej wartości do Gradle.

3
W Eclipse również miałem ten problem, ponieważ mój system miał zmienną env JAVA_HOME ustawioną na JDK7 (uruchom, echo $JAVA_HOMEaby sprawdzić). Zmień JAVA_HOME w całym systemie lub rozpocznij zaćmienie za pomocą, JAVA_HOME=/path/to/jdk8 eclipseaby złagodzić ten problem
wnuk

7

Ponieważ 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

2

Pracowały dla mnie:

  1. Przejdź do prawego górnego rogu IntelliJ -> kliknij ikonę
  2. W oknie Struktura projektu -> Wybierz projekt -> W zestawie SDK projektu wybierz odpowiednią wersję -> kliknij Zastosuj -> kliknij OK

2

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-versionrozwiązało mój problem:

 # .java-version
 11.0.3


0

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:

vi build.gradle

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.


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.