Apakah ada cara untuk dengan cepat mengalihkan semua alternatif terkait Java menggunakan update-alternatives
?
Sebagai contoh, jika ingin mengganti Java ke 7, saya menjalankan sudo update-alternatives --config java
dan memilih Java 7 OpenJdk. Tetapi jika saya menjalankan update-alternatives --get-selections | grep java
saya mendapatkan yang berikut,
appletviewer auto /usr/lib/jvm/java-6-openjdk-amd64/bin/appletviewer
extcheck auto /usr/lib/jvm/java-6-openjdk-amd64/bin/extcheck
idlj auto /usr/lib/jvm/java-6-openjdk-amd64/bin/idlj
itweb-settings auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/itweb-settings
jar auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jar
jarsigner auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jarsigner
java manual /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
javac auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javac
javadoc auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javadoc
javah auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javah
javap auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javap
javaws auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/javaws
jconsole auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jconsole
jdb auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jdb
jexec auto /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jexec
jhat auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jhat
jinfo auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jinfo
jmap auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jmap
jps auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jps
jrunscript auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jrunscript
jsadebugd auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jsadebugd
jstack auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstack
jstat auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstat
jstatd auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstatd
keytool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/keytool
native2ascii auto /usr/lib/jvm/java-6-openjdk-amd64/bin/native2ascii
orbd auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/orbd
pack200 auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/pack200
policytool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/policytool
rmic auto /usr/lib/jvm/java-6-openjdk-amd64/bin/rmic
rmid auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmid
rmiregistry auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmiregistry
schemagen auto /usr/lib/jvm/java-6-openjdk-amd64/bin/schemagen
serialver auto /usr/lib/jvm/java-6-openjdk-amd64/bin/serialver
servertool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/servertool
tnameserv auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/tnameserv
unpack200 auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/unpack200
wsgen auto /usr/lib/jvm/java-6-openjdk-amd64/bin/wsgen
wsimport auto /usr/lib/jvm/java-6-openjdk-amd64/bin/wsimport
xjc auto /usr/lib/jvm/java-6-openjdk-amd64/bin/xjc
Seperti yang Anda lihat, alternatif Java saya dialihkan ke 7, tetapi setiap alternatif lain berdasarkan OpenJDK 6 tidak dialihkan. Tentu saya bisa beralih masing-masing secara manual atau menulis skrip untuk melakukannya, tetapi saya berasumsi ada cara yang lebih baik untuk mencapai ini.
sumber
update-java-alternatives
mengubah semua alternatif java lainnya, bahkan ketika pengaturan plugin melempar kesalahan.update-java-alternatives --set java-1.8.0-openjdk-amd64
saya masih punyadefault-java -> /usr/lib/jvm/java-7-oracle
. Apakah ini disebabkan olehno alternatives for mozilla-javaplugin.so
kesalahan? Bagaimana saya bisa mengubah ini juga?jbro mengajukan pertanyaan yang sama di http://ubuntuforums.org/showthread.php?t=1817528 dan menulis naskah untuk masalah ini,
Jika tidak ada jawaban yang lebih baik, ini sepertinya solusi yang solid, tetapi saya berasumsi pasti ada cara yang lebih baik untuk
update-alternatives
menangani ini.Saya sedikit mengedit kode, karena tidak membiarkan Anda melakukan perubahan sebelum menginstalnya. Saya menambahkan dua baris lagi sebagai berikut ...
sumber
Untuk Oracle JVM, jalankan ini:
sumber
<TL; DR> update-java-alternative menggunakan file .jinfo untuk menentukan alternatif mana yang akan digunakan tetapi juga mengharapkannya telah dikonfigurasi secara terpisah.
Buat file .jinfo baru dan perbarui-entri entri jika JRE / JDK Anda yang diunduh tidak beralih dengan pembaruan-java-alternatif
[Detail]
Untuk mengkonfigurasinya secara manual:
Dekompresi jdk baru Anda di samping jdk yang ada di
/usr/lib/jvm/
Hasilkan file .jdkname.jinfo dengan menduplikasi file .jinfo lain di folder (atau ambil satu dari instalasi Ubuntu lain: Anda mengikuti template sebanyak yang lainnya).
Nama file. jdkname .jinfo harus cocok dengan nama pengguna jdk.
Ubah konten untuk mengatur tajuk (nama) dan jalur file (entri program) agar sesuai dengan pemasangan baru Anda.
Hapus baris apa pun yang merujuk ke program yang dihilangkan dalam versi Anda dan tambahkan baris untuk program baru di
/bin
Hasilkan alternatif untuk semua program sekarang dalam paket .jinfo Anda dengan templat ini:
(Beberapa jawaban terkait telah membuat skrip ini dari konten / bin atau Anda dapat melakukan pencarian / penggantian regexp pada file .jinfo Anda untuk menghasilkan perintah skrip.)
Catatan 100 hanya prioritas yang dipertimbangkan ketika mengatur versi jdk menggunakan bendera otomatis.
Periksa alternatif java dan beralih untuk menggunakan JDK.
Perhatikan bahwa beberapa JDK tidak menyertakan JRE, jadi tambahkan atau hapus entri jinfo tersebut.
sumber