ฉันพยายามที่จะนำเข้าโครงการ Gradle ในความคิด Intellij กับแจก Gradle Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'
ท้องถิ่นและได้รับการติดตามสแต็คที่มีข้อความต่อไปนี้: ใครช่วยอธิบายหน่อยได้ไหมว่าสาเหตุอะไร
ฉันพยายามที่จะนำเข้าโครงการ Gradle ในความคิด Intellij กับแจก Gradle Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'
ท้องถิ่นและได้รับการติดตามสแต็คที่มีข้อความต่อไปนี้: ใครช่วยอธิบายหน่อยได้ไหมว่าสาเหตุอะไร
คำตอบ:
นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน (Intellij Idea 2018.1.2):
1) ไปที่: File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle
2) Gradle JVM: เปลี่ยนเป็นเวอร์ชัน 1.8
3) เรียกใช้งาน gradle อีกครั้ง
สำหรับ IntelliJ 2019:
Intellij IDEA -> Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM
เลือกเวอร์ชันที่ถูกต้อง
สำหรับ 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'
ในที่สุดฉันก็นำเข้าโครงการ Gradle ของฉัน นี่คือขั้นตอน:
JAVA_HOME
ไปที่JDK 8 (เป็นลำดับที่ 7 ก่อนหน้านี้) ตามที่ฉันได้พบจากการทดลองที่ Gradle Wrapper สามารถประมวลผลโครงการด้วยJDK 8เท่านั้นorg.gradle.java.home
ตัวแปร) ในไดเร็กทอรี. gradle ของผู้ใช้ windows เนื่องจากฉันเดาว่ามันไม่ได้นำค่าเพิ่มเติมใด ๆ มาสู่ Gradleecho $JAVA_HOME
เพื่อตรวจสอบ) เปลี่ยน JAVA_HOME ทั้งระบบหรือเริ่มคราสด้วยJAVA_HOME=/path/to/jdk8 eclipse
เพื่อลดปัญหานี้
เนื่องจากฉันต้องรวบรวมแหล่งที่มาที่มีความเข้ากันได้ 7 รายการเนื่องจากระบบเดิมบางระบบและประสบปัญหาเดียวกัน ฉันพบว่าในการกำหนดค่า gradle มีสองตัวเลือกที่ตั้งค่าเป็น java 8
sourceCompatibility = 1.8
targetCompatibility = 1.8
การเปลี่ยนสิ่งเหล่านี้เป็น 1.7 ช่วยแก้ปัญหาให้ฉันได้โดยให้ JAVA_HOME ชี้ไปที่ JDK-7 ที่ติดตั้งไว้
sourceCompatibility = 1.7
targetCompatibility = 1.7
สิ่งต่อไปนี้ใช้ได้ผลสำหรับฉัน:
ฉันมีปัญหาที่เกี่ยวข้องมาก แต่สำหรับ 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
คุณต้องเปลี่ยน -> sourceCompatibility = '1.7' ใน build.Gradle
ดังนั้นฉันจึงเห็นจากคำตอบอื่น ๆ ว่ามีหลายวิธีในการจัดการกับมัน แต่ฉันไม่เชื่อเรื่องนี้ มันต้องลดลงไปทางเดียว ฉันชอบ 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')
}
วิธีการทางวิทยาศาสตร์คือวิธีการที่เปิดสำหรับการโต้แย้งและข้อตกลงเกี่ยวกับตัวส่วนทั่วไป
แม้ว่าคำถามนี้จะถามเกี่ยวกับ IntelliJ เป็นพิเศษ แต่นี่เป็นผลลัพธ์แรกที่ฉันได้รับจาก Google ดังนั้นฉันเชื่อว่าผู้ใช้ Eclipse หลายคนอาจมีปัญหาเดียวกันในการใช้ Buildship
คุณสามารถตั้งค่า Gradle JVM ของคุณใน Eclipse ได้โดยไปที่ Gradle Tasks (ในมุมมองเริ่มต้นที่ด้านล่างสุดใกล้คอนโซล) คลิกขวาที่งานเฉพาะที่คุณพยายามเรียกใช้โดยคลิก "เปิด Gradle Run Configuration ... "และย้ายไปที่แท็บ Java Home และเลือก JVM ที่ถูกต้องสำหรับโครงการของคุณ