Beralih antara Java 7 dan 8 di OS X

25

Saya telah menginstal Java-8. Sekarang saya ingin kembali ke Java-7 secara default jadi saya ketik ...

/usr/libexec/java_home -v 1.7.0_40 --exec java -version
/usr/libexec/java_home -v 1.7.0_40 --exec javac -version

Tapi saya masih melihat ...

java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

Ini berhasil ...

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

Tapi saya ingin solusi yang lebih permanen.

Adakah yang melihat kesalahan saya?

Jackie
sumber

Jawaban:

50

Mudah Beralih Versi

  1. Instal versi 1.6, 1.7, 1.8 dalam urutan apa pun. Catatan: Saya percaya yang terakhir diinstal menentukan yang mana yang akan digunakan untuk plugin browser, saya tidak akan peduli untuk mengubah yang di bawah ini.

  2. Kemudian, tambahkan ke Anda ~/.bashrcatau ~/.bash_profile, atau di mana saja:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. Verifikasi perubahan melalui java -version

    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ java -version
    java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    
    $ setjdk 1.8
    $ java -version
    java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

Jelas perubahan hanya untuk durasi shell. Tetapi Anda dapat melihat di mana Anda dapat mengaturnya secara global sekarang.

nkadwa
sumber
2
Satu masalah: JDK7 menolak untuk menginstal jika Anda sudah memiliki JDK8. Ini mengarahkan Anda ke URL di oracle.com untuk info lebih lanjut yang memberi Anda 404. Dan, tentu saja, petunjuk penghapusan instalasi untuk JDK8 tidak berfungsi sama sekali, jadi sekarang saya pada dasarnya tersesat.
Eric W
1
gunakan saja jenv jenv.be
madzohan
9

Anda dapat menggunakan jEnv ( http://www.jenv.be/ ), yang merupakan "alat baris perintah untuk membantu Anda lupa cara mengatur variabel lingkungan JAVA_HOME untuk beralih di antara berbagai versi JDK" (diambil dari beranda proyek) ).

Jika Anda terbiasa dengan Ruby, JEnv seperti menggunakan RVM atau rbenv. Ini membantu Anda menangani beberapa JDK berbeda yang diinstal pada mesin Anda tanpa harus menulis skrip Anda sendiri untuk beralih dari satu JDK ke yang lain. Anda dapat mengubah versi java saat ini berdasarkan misalnya pada direktori saat ini atau berdasarkan pada file konfigurasi.

Pietro Di Bello
sumber
Dapatkah Anda memperluas ini? Ini terlihat seperti komentar, bukan jawaban.
Austin T French
Jika Anda terbiasa dengan Ruby seperti menggunakan RVM atau rbenv untuk mengubah versi java saat ini, misalnya pada direktori saat ini atau berdasarkan pada file konfigurasi. Jika Anda membuka beranda JENV ada tutorial yang bagus.
Pietro Di Bello
Posting ini harus untuk semua orang yang mencari jawaban, jadi lebih detail dalam posting diharapkan di sini dianggap sebagai jawaban yang lengkap dan bagus.
Austin T French
Saya menambahkan lebih banyak info dan sedikit memperluas jawabannya ... semoga ini terlihat lebih baik sekarang. Terima kasih untuk umpan baliknya.
Pietro Di Bello
4

Anda tidak dapat beralih di antara versi Java. Dalam Dokumentasi Anda melihat:

Hanya satu JRE yang dapat diinstal sekaligus. Sistem tidak akan menginstal JRE yang memiliki versi lebih rendah dari versi saat ini. Jika Anda ingin menginstal versi JRE yang lebih rendah, hapus instalasi versi yang sekarang.

Jika Anda ingin kembali ke versi yang lebih lama, Anda harus menghapus Java 8.

Christian Wörz
sumber
terima kasih tetapi ini tidak membantu pendapat saya tentang OSX.
Jackie
4
@ Jackie: Sebenarnya ini tidak ada hubungannya dengan OS X tetapi lebih dengan Oracle. Kembali ketika Apple mempertahankan JDK untuk OS X itu sempurna, dan mudah, untuk beralih di antara versi Java yang aktif. Silakan salahkan Oracle untuk installer jelek mereka dan bukan OS X.
Alessandro Vermeulen
@AlessandroVermeulen dengan segala hormat itu bukan "installer" ya saya berharap itu tidak datang dengan periode versi yang sudah diinstal seperti kotak linux saya. Kemudian saya bisa "menginstal" itu yang saya inginkan dengan biner unix. Dan kemudian ada versi OSX yang lebih lama di mana bahkan diperlukan untuk boot. IMHO itu benar-benar konvensi yang digunakan dalam OSX yang menyebabkan masalah.
Jackie
4
Ada beberapa JDK yang terinstal dengan benar di mesin saya. Itu adalah plugin preferensi Oracles yang tidak memungkinkan beralih dari 1,8 ke 1,7, dari baris perintah dengan jalur penuh mereka semua bekerja dengan sukses. / usr / libexec / java_home -V mendaftar semuanya - dan panel preferensi Java 7 memungkinkan pilihan Java 7
JREs
0

Saya ingin menambah jawaban @ nkadwa. Sarannya berhasil, tetapi hanya setelah juga mengubah symlink untuk CurrentSDK. Jadi di sini adalah kode yang dimodifikasi:

setjdk() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    sudo ln -nsf ${JAVA_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8
imdahmd
sumber