Gradle - Şu araç zinciri kullanılarak 'Java SE 8' platformu hedeflenemedi: 'JDK 7 (1.7)'


119

Yerel Gradle distrib ile Intellij Idea Gradle projesini içe çalışıyor ve aşağıdaki iletiyle stacktrace alıyorum: Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'. Biri açıklayabilir mi lütfen nedeni ne olabilir?


hangi JDK sürümünü kullanıyorsunuz? graddle
Ninja

Hem Gradle'a (gradle.properties aracılığıyla) hem de Idea proje yapısına aynı JDK yolunu koydum. Demek istediğin bu muydu? Bir şey mi kaçırdım?
Vasiliy Vlasov

evet, bundan sonra işe yaradı mı?
Elasticsearch Ninja

1
Ne yazık ki hayır.
Vasiliy Vlasov

intelliJ düzeyinde SDK'yı gösteren ekran görüntüsünü ekleyebilir misiniz?
Elasticsearch Ninja

Yanıtlar:


255

Benim için işe yarayan şey buydu (Intellij Idea 2018.1.2):

1) Şuraya gidin: Dosya -> Ayarlar -> Oluşturma, Yürütme, Dağıtım -> Derleme Araçları -> Gradle

2) Gradle JVM: 1.8 sürümüne geçin

3) derecelendirme görevini yeniden çalıştırın


4
IntelliJ 2018.1.6'da (topluluk baskısı) böyle bir seçenek yok
Kai

11
Mac'te, "IntelliJ Idea" -> "Tercihler" -> "Derleme, Yürütme, Dağıtım" -> "Oluşturma Araçları" -> "Gradle"
Gubatron

2
bu problemle tekrar karşılaştım ... bir kez daha oy verdikten sonra kim bilir ne kadar zaman önce ... ++
beauXjames

53

IntelliJ 2019 için:

Intellij IDEA -> Tercihler -> Derleme, Yürütme, Dağıtım -> Derleme Araçları -> Gradle -> Gradle JVM

Doğru sürümü seçin.


26

IntelliJ 2019, JDK 13 ve gRPC için:

Intellij IDEA -> Tercihler -> Derleme, Yürütme, Dağıtım -> Derleme Araçları -> Gradle -> Gradle JVM

ve Doğru sürümü seçin .

build.gradle bağımlılıklarınıza aşağıdaki satırı eklemeniz gerekebilir

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

25

Sonunda Gradle projemi içe aktardım. Adımlar şunlardır:

  1. Yerel Gradle dağıtımından Intellij Idea Gradle Wrapper'a (gradle-2.14) geçtim.
  2. Ben sistem değişkeni işaret JAVA_HOMEetmek JDK 8 Ben Gradle Sarıcı ile projeyi işlemini diye deneyleri ile anladım ettiği gibi (daha önce 7 idi) JDK 8 sadece.
  3. Daha önce elle oluşturulmuş gradle.properties dosyasını ( org.gradle.java.homedeğişkenli) Windows user .gradle dizininde sildim, çünkü tahmin ettiğim gibi Gradle'a herhangi bir ek değer getirmedi.

2
Eclipse'de de bu sorunu yaşadım, çünkü sistemimde JAVA_HOME env değişkeni bir JDK7'ye ayarlanmış ( echo $JAVA_HOMEkontrol etmek için çalıştır ). JAVA_HOME=/path/to/jdk8 eclipseBu sorunu hafifletmek için JAVA_HOME'u sistem genelinde değiştirin veya ile tutulmaya başlayın
torun

7

Bazı eski sistemlerden dolayı 7 uyumlu bir kaynak derlemek zorunda kaldım ve aynı problemle karşılaştım. İki seçeneğin java 8 olarak ayarlandığı gradle yapılandırmasında öğrendim.

sourceCompatibility = 1.8
targetCompatibility = 1.8

Bunları 1.7'ye çevirmek benim için sorunu çözdü ve JAVA_HOME'un kurulu JDK-7'yi göstermesini sağladı

sourceCompatibility = 1.7
targetCompatibility = 1.7

2

Aşağıdakiler benim için çalıştı:

  1. IntelliJ'in sağ üst köşesine gidin -> simgeye tıklayın
  2. Proje Yapısı penceresinde -> Proje seçin -> Proje SDK'sında doğru sürümü seçin -> Uygula'ya tıklayın -> Tamam'a tıklayın

2

Çok ilgili bir sorun yaşadım ama daha yüksek Java sürümleri için:

$ ./gradlew clean assemble

... <other normal Gradle output>

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

InteliJ kullanarak çalışırken görevin başarılı olduğunu fark ettim. Bir dosya eklemek (build.gradle ile aynı seviyede) sorunumu .java-versionçözdü:

 # .java-version
 11.0.3

1

Ve böylece diğer cevaplardan bununla başa çıkmanın birkaç yolu olduğunu görüyorum. Ama buna inanmıyorum. Tek yöne indirgenmesi gerekiyor. IDE'yi seviyorum ama farklı cevaplardan sağlanan IDE adımlarını takip edersem, bunun temel cebir olmadığını biliyorum. Hatam şuna benziyordu:

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

Bunu bilimsel olarak çözmenin yolu şudur:

vi build.gradle

Değiştirmek için:

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

olmak:

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

Bilimsel yöntem, tartışmaya açık olan ve ortak paydaları ele alan yöntemdir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.