(ไม่แน่ใจว่าควรใช้ SU หรือไม่ ... การโยกย้ายเป็นตัวเลือกอย่างแน่นอน แต่ผู้เขียนโปรแกรมจำนวนมากอ่านคำถามที่นี่ดังนั้นจึงไปที่นี่)
ฉันใช้ Mac OS X 10.8.4 และฉันได้ติดตั้ง JDK 1.6.0_51 ของ Apple รวมทั้ง JDK 1.7.0_25 ของ Oracle ฉันเพิ่งติดตั้ง JDK พรีวิว 1.8 ของ Oracle สำหรับซอฟต์แวร์รุ่นก่อนวางจำหน่ายที่ต้องใช้ ตอนนี้เมื่อฉันเรียกใช้ / usr / libexec / java_home ฉันจะได้รับสิ่งนี้:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
1.7.0_25, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
1.6.0_51-b11-457, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_51-b11-457, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
เยี่ยมมาก
อย่างไรก็ตามการรัน:
$ java -version
ผลตอบแทน:
java version "1.8.0-ea"
นั่นหมายความว่าเวอร์ชันเริ่มต้นของ Java ปัจจุบันเป็นเวอร์ชันก่อนวางจำหน่ายซึ่งทำให้แพ็กเกจ "ปกติ" บางส่วนแตก (ในกรณีของฉันคือ VisualVM)
ฉันไม่สามารถตั้งค่าได้JAVA_HOME
เนื่องจากการเรียกใช้แอปพลิเคชันจะละเว้นตัวแปรสภาพแวดล้อมแม้ว่าจะเรียกใช้จากบรรทัดคำสั่ง (เช่น$ open /Applications/VisualVM.app
)
มีไฟล์ที่ฉันสามารถแก้ไขได้หรือไม่ซึ่งฉันสามารถตั้งค่ากำหนดการสั่งซื้อ JVM ได้ทั่วโลกหรือไม่
(โปรดอย่าบอกให้ฉันเปิด Java Preferences Panel เพราะมันใช้งานไม่ได้: มันไม่มีอะไรที่เป็นประโยชน์และแสดงเพียงหนึ่งใน 4 JVM ที่ฉันติดตั้งไว้)
อัปเดต :
Oracle JVM อยู่ใน/Library/Java/JavaVirtualMachines
. การตั้งชื่อไดเร็กทอรี JDK 1.8 ใหม่เป็นjdk1.8.0.jvm.xyz
ไม่เปลี่ยนแปลงอะไรเลย: java_home
ยังคงพบว่าอยู่ในตำแหน่งที่ถูกต้องและการรัน / usr / bin / java ยังคงรัน 1.8 JVM นี่ไม่ใช่ปัญหาเกี่ยวกับการเชื่อมข้อมูล ฯลฯ
คำตอบสำหรับคำถามที่คล้ายกัน
ในขณะที่คำตอบนี้ข้อเสนอปริมาณสิ่งที่สับที่จะเอารุ่นของ Java จากการถูกหยิบขึ้นมาโดย JAVA_HOME ก็ยังคงไม่ตอบคำถามนี้ว่า JAVA_HOME เลือกค่าเริ่มต้นหรือไม่และผู้ใช้สามารถที่ไม่ทำลายตั้งค่า
/usr/bin/java
ไดเรกทอรีไม่ได้มี symlink ไป 1.8.0 JDK แต่จะมีไดเร็กทอรีที่เรียกอย่างเป็นประโยชน์ซึ่งชี้ไปที่ ไม่ใช่ "JAVA_HOME มีไดเร็กทอรีย่อยที่เรียกว่าซึ่งมีคำสั่ง แต่เป็นไบนารีสากลทึบแสงซึ่งทำหน้าที่ใครรู้อะไรฉันสงสัยว่ามันใช้ฯลฯ เพื่อตัดสินใจว่าจะใช้ JVM ใด/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
Versions
A
Current
A
Commands
java
java_home
/usr/bin/java
เป็นเพียง symlink