เมื่อเร็ว ๆ นี้ทีมพัฒนาของฉันถูกบังคับให้เข้าสู่สภาพแวดล้อมการพัฒนาระยะไกลซึ่งเราไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้อย่างเต็มที่ ก่อนที่จะมีการเปลี่ยนแปลงเรามี JAR ที่ทำงานได้ดีบน Java 1.7 x64 พร้อมกับ JRE 7 เมื่อเราย้ายไปยังเซิร์ฟเวอร์ใหม่ JAR ของเราทำงานได้ดี แต่ผู้ดูแลระบบเซิร์ฟเวอร์คนหนึ่ง "อัปเดต" Java ของเราเป็นรุ่นเก่า เวอร์ชันและถอนการติดตั้งเวอร์ชันที่เราใช้อยู่ อย่าถามฉันว่าทำไมฉันไม่รู้ ฉันติดตั้ง Java 1.7 ใหม่และถอนการติดตั้ง 1.6 พร้อมกับ JRE
ปัญหาต่อไปนี้เกิดขึ้นที่รันไทม์ไม่มีข้อผิดพลาดในการสร้าง:
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.
ฉันใช้ JAR เดียวกันบนแล็ปท็อปของฉันโดยไม่มีปัญหา ทั้งเซิร์ฟเวอร์และแล็ปท็อปของฉันมี JDK 1.7 และ JRE 7 ในตัวแปร% HOME% และเส้นทางของระบบ ฉันได้ติดตั้ง JRE 6 ใหม่และวางไว้ในตัวแปร PATH สภาพแวดล้อมของระบบในภายหลังด้วยผลลัพธ์เดียวกัน
ฉันได้เปลี่ยนรีจิสทรีกลับไปดูที่ 1.6 แล้วและผลลัพธ์ดังต่อไปนี้ซึ่งฉันค้นหาและดูเหมือนว่าจะมาจากการติดตั้ง Javas หลายตัว (นำกลับไปสู่ปัญหาเดิมของฉัน):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
ฉันขอขอบคุณข้อมูลเชิงลึกที่คุณทุกคนมีในขณะที่ฉันได้ดูฟอรัมต่างๆ แต่ดูเหมือนจะไม่มีปัญหาอะไรเลย นอกจากนี้สิ่งนี้ยังเกิดขึ้นในเซิร์ฟเวอร์อื่นที่เราใช้งานด้วย ขอบคุณ!
อัปเดต: ไม่มีโชคในการคอมไพล์ JAR ใหม่เป็น 1.6 หรือ 1.7 และจับคู่ JDK นอกจากนี้เหตุใด Java เวอร์ชันใหม่ในโลกจึงทำลายเวอร์ชันที่คอมไพล์เก่ากว่าได้