Bagaimana cara mengatur versi Java default?


125

Saya mengikuti semua instruksi yang dinyatakan pada pertanyaan ini , tetapi saya menghadapi beberapa masalah dengan bagian terakhirnya.

Saya sebenarnya memiliki versi 6.22 java dan ingin memperbarui ke versi 6.30.

Jadi setelah memindahkan direktori yang diekstrak java-6-oracleke /usr/lib/jvmsaya tidak tahu harus berbuat apa, karena skrip yang ditunjukkan dalam jawaban di atas pembaruan dari java 5 ke java 6.

Demi kejelasan di sini adalah output jika saya melakukan lsdir /usr/lib/jvm:

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

Apa yang harus saya lakukan sekarang?


BAGIAN TAMBAH

Di bawah saran @fossfreedom saya tetap menjalankan skrip dan sebenarnya itu memperbarui versi java.

Bahkan jika saya menjalankan java -versionoutput perintah akan menjadi sebagai berikut:

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

Masih ada masalah , jika Irun javac -versionmemberi saya versi lama yang diinstal:

$ javac -version
javac 1.6.0_22

Dan jika saya menggunakan tester pada tautan ini, ia akan memberi tahu saya versi itu

Java Version 1.6.0_22 from Sun Microsystems Inc.

Apa yang salah?

Tampaknya Java Runtime Environment telah diperbarui, tetapi Java Compiler dan Java plugin untuk browser belum.

Bagaimana saya bisa memperbaruinya?


BAGIAN TAMBAHAN LAINNYA

sudo update-alternatives --config java akan kembali mengikuti output

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

Press enter to keep the current choice[*], or type selection number:

ini masuk akal dengan fakta bahwa JRE diperbarui dengan benar ke versi 6.31, masalah ada di Java Compiler dan plugin browser Java.

Ada ide?


@fossfreedom Saya belum mencobanya karena saya pikir itu bukan ide yang baik karena ditulis secara eksplisit untuk mengunggah dari Java 5 ke 6, apakah saya harus tetap melakukannya?
Matteo

1
hmmm - mungkin Anda mungkin bingung bahwa skrip webupd8 adalah 0,5b? Itu adalah versi skrip - ia tidak merujuk ke versi java. Cobalah. Mari kita lihat tangkapan layar seperti apa jendelanya saat Anda menjalankan skrip.
fossfreedom

@fossfreedom ya itu benar-benar membingungkan saya; DI saya menjalankan skrip! periksa suntingan yang dimaksud! Terima kasih banyak untuk membantu saya ..
Matteo

betapa anehnya ... tidak pernah menemukan itu. Pokoknya - lihat jawaban di bawah ini - Anda harus dapat sudo update-alternativessesuai dengan contoh.
fossfreedom

@fossfreedom memperbarui pertanyaan lagi!
Matteo

Jawaban:


104

Jawab pertanyaan pertama Anda:

mungkin Anda mungkin bingung bahwa skrip webupd8 adalah 0,5b. Itu adalah versi skrip - ia tidak merujuk ke versi java.

Lebih jauh ke pengaturan versi javac.

Saya menduga Anda perlu secara eksplisit memberikan path dari kompiler javac

yaitu

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

diikuti oleh:

sudo update-alternatives --config javac

Berkenaan dengan pengaturan plugin java chrome.

Pertanyaan utama:

Bagaimana cara saya menginstal Oracle JDK 6?

termasuk informasi ini - karena struktur folder Anda sedikit berbeda perintah tautan Anda seharusnya:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/

Sendiri ini hanya mengubah kompiler - lihat jawaban di bawah ini untuk pembaruan-java-alternatif yang menangani switching semua alternatif terkait java, yang 82 pada sistem saya.
Greg

55

Lihat ini ; Lari

sudo  update-java-alternatives --list

untuk membuat daftar semua instalasi Java pada mesin dengan nama dan direktori, dan kemudian jalankan

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

untuk memilih JRE / JDK mana yang akan digunakan.

Jika Anda ingin menggunakan JDK / JRE yang berbeda untuk setiap tugas Java, Anda dapat menjalankan pembaruan-alternatif untuk mengonfigurasi satu java yang dapat dieksekusi pada satu waktu; kamu bisa lari

sudo  update-alternatives --config java[Tab]

untuk melihat perintah Java yang dapat dikonfigurasi (java, javac, javah, javaw, dll). Lalu

sudo  update-alternatives --config [javac|java|javadoc|etc.]

akan mengaitkan tugas / perintah Java ke JDK / JRE tertentu.

Anda mungkin juga perlu mengatur JAVA_HOME untuk beberapa aplikasi: dari jawaban ini dapat Anda gunakan

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

untuk JREs, atau

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

untuk JDK.


25

Saya pikir Anda harus melihat pada update-java-alternativesperintah dari java-commonpaket dan *.jinfofile yang digunakan olehnya. Dengan itu Anda harus dapat beralih sepenuhnya antara instalasi java (terlepas dari JDK, JRE, ...).


2
Saya mencoba update-java-alternativesdan kemudian java -versionbenar, tetapi tautannya $JAVA_HOMEmasih salah ... Saya mengubahnya secara manual, tetapi saya bertanya-tanya apakah ada sesuatu yang hilang dalam update-java-alternativeshal itu.
Alexis Wilke

7

Di ubuntu / linux Anda dapat beralih versi java menggunakan

update-alternatives --config java

Tetapi sebelumnya, Anda perlu menginstal versi.

Anda dapat menggunakan skrip ini (./install-java.sh) untuk menginstal beberapa JVM

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

Letakkan skrip ini di folder yang telah membongkar JVM, dan jalankan:

/opt/install-java.sh

Penggunaan selanjutnya:

update-alternatives --config java

1

Jika Anda akan secara manual mengatur alternatif untuk javac javaws javadoc atau perintah terkait java lainnya, Anda mungkin ingin menjadikannya budak dari java altenative.

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java - auto mode link versi terbaik adalah /opt/jdk1.8.0_74/bin/java tautan saat ini menunjuk ke /opt/jdk1.8.0_74/bin/java tautan java adalah / usr / bin / java slave javadoc adalah / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - prioritas 0 slave javadoc: /opt/jdk1.8.0_74/bin/javadoc

Ubah /opt/jdk1.8.0_74/ dengan dir di mana jdk Anda diinstal.


0

Buka /etc/environmentdi editor teks Anda dan tambahkan baris berikut:

JAVA_HOME="usr/lib/jvm/open-jdk 

- Jalur Java bisa berbeda.
Gunakan sumber untuk memuat variabel, dengan menjalankan perintah ini:

source /etc/environment

Kemudian periksa variabelnya, dengan menjalankan perintah ini:

echo $JAVA_HOME

Dengan set path ini, jalankan perintah ini:

sudo  update-java-alternatives --list

Pilih Versi Java default Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.