(Tidak yakin apakah ini harus berjalan di SU ... migrasi tentu saja merupakan pilihan, tetapi lebih banyak pemrogram membaca pertanyaan di sini, jadi begini).
Saya menjalankan Mac OS X 10.8.4, dan saya telah menginstal JDK 1.6.0_51 Apple serta JDK 1.7.0_25 Oracle. Saya baru-baru ini menginstal JDK pratinjau 1.8 Oracle untuk beberapa perangkat lunak pra-rilis yang membutuhkannya. Sekarang, ketika saya menjalankan / usr / libexec / java_home, saya mendapatkan ini:
$ /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
Bagus.
Namun, menjalankan:
$ java -version
Pengembalian:
java version "1.8.0-ea"
Itu berarti bahwa versi default Java saat ini adalah versi pra-rilis, yang merusak beberapa paket "normal" (dalam kasus saya, VisualVM).
Saya tidak dapat menyetel JAVA_HOME
karena meluncurkan aplikasi mengabaikan variabel lingkungan, bahkan saat meluncurkan dari baris perintah (misalnya $ open /Applications/VisualVM.app
).
Jadi, apakah ada file yang dapat saya edit di mana saya dapat mengatur preferensi pemesanan JVM saya secara global ?
(Tolong jangan beri tahu saya untuk meluncurkan Panel Preferensi Java karena itu tidak berfungsi: tidak berisi sesuatu yang berguna dan hanya mencantumkan salah satu dari 4 JVM yang telah saya instal.)
Pembaruan :
Oracle JVM tersedia /Library/Java/JavaVirtualMachines
. Penamaan ulang direktori JDK 1.8 jdk1.8.0.jvm.xyz
tidak mengubah apa pun: java_home
masih menemukannya di tempat yang benar, dan menjalankan / usr / bin / java masih mengeksekusi 1.8 JVM. Ini bukan masalah dengan tautan sinkronisasi, dll.
Jawaban untuk Pertanyaan Serupa
Meskipun jawaban ini menawarkan jumlah peretasan yang akan menghapus versi Java agar tidak diambil oleh java_home, jawaban ini masih tidak menjawab pertanyaan tentang bagaimana java_home memilih defaultnya dan apakah pengguna dapat mengaturnya secara non-destruktif atau tidak .
/usr/bin/java
menunjuk ke /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
. The Versions
direktori tidak berisi symlink ke 1.8.0 JDK. Sebaliknya, berisi direktori membantu disebut A
yang Current
menunjuk ke. A
bukan "JAVA_HOME. Ia memiliki subdirektori bernama Commands
yang memang memiliki java
perintah, tetapi ini adalah biner universal buram yang melakukan siapa-tahu-apa. Saya curiga ia menggunakan java_home
, dll. untuk memutuskan JVM mana yang akan digunakan.
/usr/bin/java
hanya symlink