(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_HOMEkarena 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.xyztidak mengubah apa pun: java_homemasih 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/javamenunjuk ke /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java. The Versionsdirektori tidak berisi symlink ke 1.8.0 JDK. Sebaliknya, berisi direktori membantu disebut Ayang Currentmenunjuk ke. Abukan "JAVA_HOME. Ia memiliki subdirektori bernama Commandsyang memang memiliki javaperintah, 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/javahanya symlink