javac: รุ่นเป้าหมายไม่ถูกต้อง: 1.8


87

ฉันเพิ่งดาวน์โหลด JDK 1.8.0.0_06 ที่มาพร้อมกับ NetBeans จากนั้นฉันก็พบว่าโปรเจ็กต์ JavaFx ของฉันที่ฉันพัฒนาใน Java 1.7 จะไม่คอมไพล์ใน Java 1.8 ดังนั้นฉันจึงลด JDK เป็น 1.7 ฉันยังไม่สามารถใช้งาน / คอมไพล์ได้ ฉันได้รับข้อผิดพลาดนี้:

javac: invalid target release: 1.8
Usage: javac <options> <source files>

ฉันติดขัดจริงๆและขอขอบคุณอย่างยิ่งที่ได้ช่วยเหลือ


1
หากคุณกำลังจะลงจากตำแหน่งให้เปลี่ยนแหล่งที่มาของโปรเจ็กต์เป็น 1.7 เช่นกันคลิกขวาที่ของคุณProject -> Properties -> Sources windowและตั้งค่า 1.7 ที่นี่
jmj

คุณคือผู้ช่วยชีวิต @Jigar Joshi !!!! ขอบคุณอีกครั้ง ***** โรงสี รู้สึกซาบซึ้งมาก คุณสามารถใส่คำตอบของคุณเป็นคำตอบเพื่อให้ฉันยอมรับได้ ว้าว! ขอขอบคุณอีกครั้ง ติดมานานมาก!
Program-Me-Rev

หากโปรเจ็กต์ของคุณไม่คอมไพล์ภายใต้ Java 1.8 คุณมีแนวโน้มที่จะทำอะไรผิดพลาดไปพอสมควร (ตัวอย่างเช่นคุณมีฟิลด์แบบคงที่สำหรับส่วนประกอบ UI ในโค้ดที่คุณโพสต์ไว้ใน quetion อื่นซึ่งเป็นข้อผิดพลาดในการออกแบบที่ร้ายแรง) อาจเป็นการดีกว่าที่จะแก้ไขปัญหานั้นมากกว่าการเปลี่ยนกลับไปใช้เวอร์ชันที่ผู้ใช้จำนวนมากจะอัปเกรดในอนาคต
James_D

คุณพูดถูก @James_D นี่เป็นโครงการแรกของฉันใน java ฉันค่อนข้างสอนการเขียนโปรแกรมด้วยตัวเองและไม่ได้รับข้อมูลทั้งหมดเกี่ยวกับการหลีกเลี่ยงสมาชิกแบบคงที่อินเทอร์เฟซและส่วนที่เหลือเกี่ยวกับความหลากหลายจนถึงตอนนี้ โครงการของฉันใหญ่เกินไปที่จะแก้ไขทั้งหมดในครั้งเดียว ฉันวางแผนที่จะแก้ไขและย้ายไปใช้การฉีดขึ้นอยู่กับสปริงทีละนิดเมื่อฉันเสร็จสิ้นในพื้นที่อื่น ๆ ที่เหลือ มันเป็นบทเรียนที่เจ็บปวด แต่ก็เรียนรู้ได้ดี
Program-Me-Rev

1
มี Java เวอร์ชัน 1.8.0, 1.8.0_05 และ 1.8.0_11 แต่ไม่มีสิ่งที่เรียกว่า 1.8.0.0_06
David Conrad

คำตอบ:


33

หากคุณกำลังจะลงจากตำแหน่งให้เปลี่ยนแหล่งที่มาของโปรเจ็กต์เป็น 1.7 ด้วย

right click on your Project -> Properties -> Sources window 

และตั้งค่า1.7ที่นี่

หมายเหตุ: อย่างไรก็ตามฉันขอแนะนำให้คุณทราบว่าเหตุใดจึงไม่ทำงานบน 1.8


65

สำหรับ IntelliJ14 คุณอาจต้องเปลี่ยนเวอร์ชัน bytecode wrt JDK ที่คุณใช้ (ในการตั้งค่าส่วนกลาง):

ใส่คำอธิบายภาพที่นี่


ไม่ได้ผลสำหรับฉันเปลี่ยนเวอร์ชัน bytecode เป้าหมายเป็น 1.8 แต่ได้รับข้อผิดพลาดเดียวกัน
Tribbloid

แต่คำถามเกี่ยวกับ Netbeans?
Jolta

27
  1. ดาวน์โหลดJDK 8 .
  2. แก้ไข env var ของคุณJAVA_HOMEเพื่อชี้ไปที่ JDK 1.8 ที่ติดตั้งใหม่: R-click ที่ My Computer -> Properties -> Advanced System Settings -> Environment Variables จะพบJAVA_HOMEในรายการและตั้งค่าเป็นค่านี้:

    C:\Program Files\Java\jdk1.8.0_31
    
  3. ค้นหาเวอร์ชันเก่าและแก้ไขในPATHตัวแปรเช่นกัน

  4. คุณอาจต้องรีสตาร์ทระบบ

ควรจะทำ


23

หากข้อผิดพลาดนี้เกิดขึ้นเมื่อรันงาน Gradle (หรือ Maven) คุณต้องแก้ไขคอนฟิกูเรชันเครื่องมือบิลด์นั้นให้ชี้ไปที่การติดตั้ง Java JDK 1.8 ตามเส้นทางนี้:

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle

ที่นั่นคุณตรวจสอบโครงการ Gradle ที่เชื่อมโยงเป็นโครงการที่คุณกำลังดำเนินการและเลือก Gradle JVM (คุณพลาดสิ่งนี้เมื่อคุณนำเข้าโครงการ gradle ไปยัง IntelliJ)

ใส่คำอธิบายภาพที่นี่

โปรดจำไว้ว่าเมื่อนำเข้าโครงการ Gradle (หรือ Maven) เพื่อตั้งค่า JVM เป้าหมายอย่างถูกต้องที่นี่: ใส่คำอธิบายภาพที่นี่


14

javac ของคุณไม่ได้ชี้ไปที่จาวาที่ถูกต้อง

ตรวจสอบตำแหน่งที่ javac ของคุณชี้โดยใช้คำสั่งต่อไปนี้ -

update-alternatives --config javac

หากไม่ได้ชี้ไปที่ javac ที่คุณต้องการคอมไพล์ให้ชี้ไปที่ "/ JAVA8_HOME / bin / javac" หรือ java ที่คุณต้องการคอมไพล์ด้วย


ทำไม -1 ฉันเป็นปัญหาเดียวกันและนั่นเป็นเพราะ javac ของฉันไม่ได้ตั้งค่าให้แก้ไขเวอร์ชัน java
Piyush Jajoo

โปรดทราบว่าการกำหนดค่าอาจเสียวิธีการเลือก java และ javac จากการแจกแจงที่แตกต่างกัน!
Audrius Meskauskas

9

โดยส่วนใหญ่ปัญหาประเภทนี้เกิดขึ้นเนื่องจากเวอร์ชันจาวาที่ไม่ถูกต้อง ตรวจสอบให้แน่ใจว่าตัวแปร PATH และ JAVA_HOME ของคุณชี้ไปยังเวอร์ชันที่ถูกต้อง


ใช่ - นั่นก็เป็นสาเหตุของฉันเหมือนกัน
guy mograbi


3

ไม่มีวิธีแก้ไขปัญหาก่อนหน้านี้สำหรับฉัน

ฉันแก้ไขโดยการแก้ไข .idea / compiler.xml มีสำเนา "พิเศษ" (1) และ (2) ของโมดูลที่ไม่ดีซึ่งมีเป้าหมายต่างกัน ฉันลบรายการที่ไม่เกี่ยวข้องและเปลี่ยนเป้าหมายในส่วนเป็น 1.8 และใช้งานได้


ที่แก้ไขให้ฉันเช่นกัน
davidmerrick

2

สำหรับ IntelliJ IDEA Ultimate เวอร์ชันล่าสุด ณ วันที่ 18 ธันวาคม 2017 หากคำแนะนำข้างต้นใช้ไม่ได้ผลโปรดลองทำดังต่อไปนี้: คลิกขวาที่โครงการและไปที่ "Open Module Settings" เปิดจากนั้นเปลี่ยน "ระดับภาษา" จากเมนูแบบเลื่อนลง


ตรวจสอบให้แน่ใจด้วยว่าในการตั้งค่าโมดูลภายใต้แท็บการอ้างอิงได้เลือกโมดูล SDK ที่ถูกต้องแล้ว
Rene Juuse

1

หากคุณกำลังจะลงจากตำแหน่งให้เปลี่ยนแหล่งที่มาของโปรเจ็กต์เป็น 1.7 ด้วย

คลิกขวาที่หน้าต่าง Project -> Properties -> Sources และตั้งค่า 1.7 ที่นี่ "Jigar Joshi

ไปที่build-impl.xmlและค้นหาคุณสมบัติexcludeFromCopy="${copylibs.excludes}"และลบคุณสมบัตินี้ในรหัสของฉันอยู่ที่บรรทัด 827 แต่ฉันเคยเห็นมันในบรรทัดอื่น

สำหรับฉันคือการใช้รหัสจาก MAC OS java 1.8 เพื่อ WIN XP java 1.7


1

หรือฉันตรวจสอบ pom.xml และเปลี่ยนแปลง

<java.version>1.8</java.version>

ถึง

<java.version>1.7</java.version>

กราเซียสแก้ไขให้ฉันง่ายมาก
Fabii

1

ฉันมีปัญหาเดียวกันกับ netbeans แต่การสร้าง mvn ก็ใช้ได้ในหน้าต่าง cmd สำหรับฉันปัญหาได้รับการแก้ไขหลังจากเปลี่ยน JDK ของ netbeans (ใน netbeans.conf ด้านล่าง)

netbeans_jdkhome = "C: \ Program Files \ Java \ jdk1.8.0_91"


แก้ไข: ดูเหมือนว่าจะกล่าวถึงที่นี่: netbeans bug 236364



0

ฉันพบปัญหาเดียวกันใน IntelliJ IDEA Community กับ Maven และฉันต้องนำเข้าโครงการอีกครั้งโดยคลิกขวาที่โครงการในแท็บโครงการ -> Maven -> นำเข้าใหม่


-1

การติดตั้ง IDEA Community รุ่นใหม่กว่า (2018.3 แทนที่จะเป็นปี 2017x) ได้รับการแก้ไขปัญหาของฉันด้วยข้อผิดพลาดเดียวกัน แต่เวอร์ชัน java: 11 Reimport ไม่ได้ผลสำหรับฉัน แต่ก็คุ้มค่าที่จะลอง

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