Gradle - ไม่สามารถกำหนดเป้าหมายแพลตฟอร์ม: 'Java SE 8' โดยใช้ tool chain: 'JDK 7 (1.7)'


127

ฉันพยายามที่จะนำเข้าโครงการ Gradle ในความคิด Intellij กับแจก Gradle Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'ท้องถิ่นและได้รับการติดตามสแต็คที่มีข้อความต่อไปนี้: ใครช่วยอธิบายหน่อยได้ไหมว่าสาเหตุอะไร


คุณใช้ JDK เวอร์ชันใด พยายามใช้แบบเดียวกับที่กำหนดไว้ใน graddle
Ninja

ฉันได้วางเส้นทางไปยัง JDK เดียวกันทั้งไปยัง Gradle (ผ่าน gradle.properties) และในโครงสร้างโครงการ Idea นั่นคือสิ่งที่คุณหมายถึง? ฉันพลาดอะไรไปหรือเปล่า?
Vasiliy Vlasov

ใช่มันใช้งานได้หรือไม่?
Elasticsearch Ninja

1
น่าเสียดายที่ไม่มี
Vasiliy Vlasov

คุณสามารถเพิ่มภาพหน้าจอที่แสดง SDK ระดับ intelliJ ได้หรือไม่
Elasticsearch Ninja

คำตอบ:


277

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน (Intellij Idea 2018.1.2):

1) ไปที่: File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle

2) Gradle JVM: เปลี่ยนเป็นเวอร์ชัน 1.8

3) เรียกใช้งาน gradle อีกครั้ง


4
ไม่มีตัวเลือกดังกล่าวใน IntelliJ 2018.1.6 (ฉบับชุมชน)
Kai

13
ใน Mac ให้ไปที่ "IntelliJ Idea" -> "Preferences" -> "Build, Execution, Deployment" -> "Build Tools" -> "Gradle"
Gubatron

2
ฉันพบปัญหานี้อีกครั้ง ... หลังจากที่ฉันโหวตแล้วเมื่อใครจะรู้ว่านานแค่ไหนแล้ว ... ++
beauXjames

59

สำหรับ IntelliJ 2019:

Intellij IDEA -> Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM

เลือกเวอร์ชันที่ถูกต้อง


33

สำหรับ IntelliJ 2019, JDK 13 และ gRPC:

Intellij IDEA -> Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM

และเลือกรุ่นที่ถูกต้อง

คุณอาจต้องเพิ่มบรรทัดด้านล่างในการอ้างอิง build.gradle ของคุณ

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

26

ในที่สุดฉันก็นำเข้าโครงการ Gradle ของฉัน นี่คือขั้นตอน:

  1. ฉันเปลี่ยนจาก Gradle distribution ในเครื่องเป็น Intellij Idea Gradle Wrapper (gradle-2.14)
  2. ฉันชี้ตัวแปรระบบJAVA_HOMEไปที่JDK 8 (เป็นลำดับที่ 7 ก่อนหน้านี้) ตามที่ฉันได้พบจากการทดลองที่ Gradle Wrapper สามารถประมวลผลโครงการด้วยJDK 8เท่านั้น
  3. ฉันลบไฟล์gradle.properties ที่สร้างด้วยตนเองก่อนหน้านี้(พร้อม org.gradle.java.homeตัวแปร) ในไดเร็กทอรี. gradle ของผู้ใช้ windows เนื่องจากฉันเดาว่ามันไม่ได้นำค่าเพิ่มเติมใด ๆ มาสู่ Gradle

3
ใน Eclipse ฉันมีปัญหานี้เช่นกันเนื่องจากระบบของฉันมีตัวแปร JAVA_HOME env ที่ตั้งค่าเป็น JDK7 (รันecho $JAVA_HOMEเพื่อตรวจสอบ) เปลี่ยน JAVA_HOME ทั้งระบบหรือเริ่มคราสด้วยJAVA_HOME=/path/to/jdk8 eclipseเพื่อลดปัญหานี้
หลาน

7

เนื่องจากฉันต้องรวบรวมแหล่งที่มาที่มีความเข้ากันได้ 7 รายการเนื่องจากระบบเดิมบางระบบและประสบปัญหาเดียวกัน ฉันพบว่าในการกำหนดค่า gradle มีสองตัวเลือกที่ตั้งค่าเป็น java 8

sourceCompatibility = 1.8
targetCompatibility = 1.8

การเปลี่ยนสิ่งเหล่านี้เป็น 1.7 ช่วยแก้ปัญหาให้ฉันได้โดยให้ JAVA_HOME ชี้ไปที่ JDK-7 ที่ติดตั้งไว้

sourceCompatibility = 1.7
targetCompatibility = 1.7

2

สิ่งต่อไปนี้ใช้ได้ผลสำหรับฉัน:

  1. ไปที่มุมขวาบนของ IntelliJ -> คลิกไอคอน
  2. ในหน้าต่างโครงสร้างโครงการ -> เลือกโครงการ -> ใน Project SDK ให้เลือกเวอร์ชันที่ถูกต้อง -> คลิกใช้ -> คลิกตกลง

2

ฉันมีปัญหาที่เกี่ยวข้องมาก แต่สำหรับ Java เวอร์ชันที่สูงกว่า:

$ ./gradlew clean assemble

... <other normal Gradle output>

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

ฉันสังเกตเห็นว่างานสำเร็จเมื่อทำงานโดยใช้ InteliJ การเพิ่มไฟล์ (ระดับเดียวกับ build.gradle) เรียกว่า.java-versionแก้ไขปัญหาของฉัน:

 # .java-version
 11.0.3


0

ดังนั้นฉันจึงเห็นจากคำตอบอื่น ๆ ว่ามีหลายวิธีในการจัดการกับมัน แต่ฉันไม่เชื่อเรื่องนี้ มันต้องลดลงไปทางเดียว ฉันชอบ IDE แต่ถ้าฉันทำตามขั้นตอน IDE ที่ให้ไว้จากคำตอบอื่นฉันรู้ว่านี่ไม่ใช่พีชคณิตพื้นฐาน ข้อผิดพลาดของฉันดูเหมือน:

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

และวิธีแก้ทางวิทยาศาสตร์คือ:

vi build.gradle

หากต้องการเปลี่ยนจาก:

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

ที่จะกลายเป็น:

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

วิธีการทางวิทยาศาสตร์คือวิธีการที่เปิดสำหรับการโต้แย้งและข้อตกลงเกี่ยวกับตัวส่วนทั่วไป


0

แม้ว่าคำถามนี้จะถามเกี่ยวกับ IntelliJ เป็นพิเศษ แต่นี่เป็นผลลัพธ์แรกที่ฉันได้รับจาก Google ดังนั้นฉันเชื่อว่าผู้ใช้ Eclipse หลายคนอาจมีปัญหาเดียวกันในการใช้ Buildship

คุณสามารถตั้งค่า Gradle JVM ของคุณใน Eclipse ได้โดยไปที่ Gradle Tasks (ในมุมมองเริ่มต้นที่ด้านล่างสุดใกล้คอนโซล) คลิกขวาที่งานเฉพาะที่คุณพยายามเรียกใช้โดยคลิก "เปิด Gradle Run Configuration ... "และย้ายไปที่แท็บ Java Home และเลือก JVM ที่ถูกต้องสำหรับโครงการของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.