ไม่สามารถเปลี่ยนเวอร์ชันหลักของไฟล์ jar ที่รันได้ใน eclipse

ฉันกำลังใช้งาน Eclipse Luna Service Release 2 (4.4.2) สำหรับโปรเจ็กต์ Java ฉันไม่สามารถลดเวอร์ชันหลักจาก 52(java 8) เป็น 50(java 6) สำหรับคลาสภายในไฟล์ jar ที่รันได้ เมื่อฉันรันโปรแกรม java ภายใน eclipse มันกำลังทำงานอยู่ แต่เมื่อฉันสร้างไฟล์ jar มันแสดงข้อผิดพลาด Unsupported major.minor เวอร์ชัน 52.0 ฉันไม่มี Java 7 และ Java 8 ติดตั้งอยู่ในระบบของฉัน


person Satish Dalal    schedule 23.01.2020    source แหล่งที่มา


คำตอบ (1)


ไม่สามารถเปลี่ยนเวอร์ชันหลัก (ไฟล์คลาส) ของไฟล์ jar ที่รันได้ใน Eclipse

ถูกต้อง. คุณไม่สามารถทำอย่างนั้นได้

หมายเลขเวอร์ชันไม่ใช่หมายเลขเวอร์ชันของไฟล์ JAR เป็นหมายเลขเวอร์ชันของไฟล์คลาส รูปแบบ ที่ใช้เพื่อแสดงคลาสใน JAR นั้น (และในทางเทคนิคแล้ว ไฟล์คลาสที่แตกต่างกันใน JAR อาจ มีหมายเลขเวอร์ชันไฟล์คลาสที่แตกต่างกัน)

สิ่งที่คุณต้องการจริงๆ คือการคอมไพล์โค้ดใหม่จากซอร์สโค้ดโดยระบุหมายเลขเวอร์ชันของคอมไพเลอร์อื่น ซึ่งสามารถทำได้ใน Eclipse โดยใช้การตั้งค่าโปรเจ็กต์ หรือ (ด้วย Maven) ในไฟล์ POM แต่โปรดทราบว่าคุณจะได้รับผลลัพธ์ที่ดีที่สุดหาก Eclipse มีสิทธิ์เข้าถึง JDK / JRE สำหรับเวอร์ชัน Java เป้าหมาย

(ฉันไม่ได้ตรวจสอบว่าคอมไพเลอร์ Eclipse Luna ยังคงสามารถสร้างโค้ดสำหรับ Java 6 ได้หรือไม่ ฉันจำได้ว่าตัวเลือกนี้ถูกทิ้งสำหรับคอมไพเลอร์ Java บางตัว การรองรับการสร้างโค้ดสำหรับแพลตฟอร์มเก่าหลายแพลตฟอร์มกำลังขัดขวางความคืบหน้า ดังนั้น คุณ อาจ ต้องใช้ Eclipse เวอร์ชันเก่ากว่า ...)


อย่างที่กล่าวไปแล้ว คุณไม่ควรใช้ Java 7 หรือเก่ากว่า พวกเขาสิ้นชีวิตมาหลายปีแล้ว คุณพลาดแพตช์รักษาความปลอดภัยและสิ่งดีๆ อื่นๆ มานานหลายปี ขอแนะนำให้อัปเกรดแพลตฟอร์มบิลด์และการดำเนินการของคุณเป็น Java 8 หรือ Java 11 เป็นอย่างน้อย ... ทันทีที่ใช้งานได้จริง

ฉันไม่มี Java 1.7 และ 1.8 ติดตั้งอยู่บนระบบของฉัน

ใช่แล้ว ... แก้ไข นั้น ติดตั้ง Java 1.8 == Java 8

person Stephen C    schedule 23.01.2020
comment
ขอบคุณ แต่ฉันคอมไพล์โค้ดใหม่และส่งออกไฟล์ jar ที่รันได้อีกครั้ง แต่ผลลัพธ์ยังคงเหมือนเดิม จริงๆ แล้วฉันต้องการคลาสที่คอมไพล์ java 6 เท่านั้น ฉันไม่มี java 7 และ java 8 ติดตั้งอยู่ในระบบของฉัน แล้ววิธีการคอมไพล์ไฟล์คลาส java ของเวอร์ชัน 52 - person Satish Dalal; 23.01.2020
comment
comment
ถูกต้อง. และคอมไพเลอร์นั้นสามารถสร้างรหัสไบต์สำหรับคลาสไฟล์เป้าหมายได้หลายเวอร์ชัน ดังนั้นคุณต้องกำหนดค่า Eclipse ให้ทำสิ่งที่คุณต้องการ ดูคำตอบของฉัน หรือรันการคอมไพล์ของคุณจากบรรทัดคำสั่งโดยใช้เครื่องมือบิลด์ เช่น maven, ant, gradle และตั้งค่าคำสั่งบิลด์อย่างเหมาะสม - person Stephen C; 23.01.2020