Bagaimana cara mengatur Java Oracle sebagai Java default di Ubuntu?

134

Bagaimana cara mengubah nilai JAVA_HOMEdi Ubuntu agar mengarah ke Oracle's Java?

Haruskah itu menunjuk ke java-6-sunatau java-6-sun-1.6.0.24?

Ashish Agarwal
sumber

Jawaban:

175

Saya meletakkan garis:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

di ~/.bashrcfile saya .

/usr/lib/jvm/java7-oracleharus berupa tautan simbolis yang menunjuk ke /usr/lib/jvm/java-7-oracle-[version number here].

Alasan ini adalah tautan simbolis karena jika ada versi baru JVM, Anda tidak perlu memperbarui .bashrcfile Anda , itu akan secara otomatis mengarah ke versi baru.

Jika Anda ingin mengatur JAVA_HOMEvariabel lingkungan secara global dan pada tingkat sistem berarti penggunaan harus diatur dalam /etc/environmentfile.

srkiNZ84.dll
sumber
4
Atau /usr/lib/jvm/java-1.6.0-openjdk-amd64 jika Anda menggunakan OpenJDK, bukan JDK Oracle (Sun).
pm_labs
7
Anda dapat menggunakan ekspor JAVA_HOME = / usr / lib / jvm / default-java /
noomz
@noomz Bagaimana Anda mendapatkannya jika default-java tidak ada?
AHungerArtist
@AHungerArtist Anda mendapatkan itu jika Anda menginstal openjdk atau paket resmi Ubuntu lain yang didukung. Sayangnya, itu tidak didukung untuk Oracle JDK yang menggunakan webupd8 / java ppa. Faktanya, tidak jelas bagi saya, apa yang dilakukan oracle-java7-set-defaultpaket itu.
Melvyn
Di mana di dalam file Anda meletakkannya?
Czipperz
166

Jika Anda ingin mengubahnya secara global dan pada tingkat sistem;

Di

/etc/environment

tambahkan baris ini:

JAVA_HOME=/usr/lib/jvm/java-7-oracle
metdos
sumber
27
+1 Ini adalah cara yang disarankan help.ubuntu.com/community/EnvironmentVariables
daniel kullmann
@metdos jawaban di atas bukan secara global atau di tingkat sistem?
Android Killer
1
@AndroidKiller sudahkah Anda memeriksa tautan yang ditunjukkan oleh Daniel Kullmann?
metdos
@metdos Bekerja dengan baik, tetapi variabel referensi tidak berfungsi untuk saya ... $JAVA_HOMEtidak menyelesaikan saat digunakan seperti ini PATH=$JAVA_HOME/bin, mencoba memulai ulang, tidak berpengaruh. Apakah saya harus exportatau set JAVA_HOMEdi file ini atau profil saya?
raffian
@Raffian Saya tidak yakin tentang kasus sudut yang berbeda, cara ini bekerja dengan sempurna untuk saya, untuk informasi lebih lanjut saya akan merekomendasikan Anda untuk membaca help.ubuntu.com/community/EnvironmentVariables
metdos
54

untuk mengatur Java SE Development Kit Oracle sebagai sistem default Java cukup unduh Java SE Development Kit terbaru dari sini kemudian buat direktori di suatu tempat yang Anda suka di sistem file Anda misalnya /usr/javasekarang ekstrak file yang baru saja Anda unduh di direktori itu:

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java

sekarang untuk menyetel JAVA_HOMEvariabel lingkungan Anda :

$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

pastikan java Oracle disetel sebagai java default oleh:

$ update-alternatives --config java

Anda mendapatkan sesuatu seperti ini:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/java/jdk1.8.0_05/bin/java                  20000     auto mode
  1            /opt/java/jdk1.8.0_05/bin/java                  20000     manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode

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

perhatikan tanda bintang sebelum nomor di sebelah kiri dan jika yang benar tidak disetel pilih yang benar dengan mengetik nomornya dan tekan enter. sekarang uji java Anda:

$ java -version

jika Anda mendapatkan sesuatu seperti berikut ini, Anda dapat melakukannya:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

juga perhatikan bahwa Anda mungkin memerlukan izin root atau berada di grup sudoers untuk dapat melakukan ini. Saya telah menguji solusi ini di ubuntu 12.04 dan Debian wheezy dan berfungsi di keduanya.

Barracuda
sumber
1
ya solusi ini jauh lebih bersih daripada yang diterima.
simone cittadini
@JayminGajjar berkomentar tidak perlu mengutarakan rasa syukur. Mekanisme untuk mendukung pertanyaan / jawaban yang baik di website ini adalah dengan upvote. Jika Anda tidak memiliki reputasi yang cukup untuk melakukan itu tetapi memiliki cukup banyak komentar, silakan coba memasukkan beberapa info berguna di dalamnya seperti pada sistem apa dan OS apa yang Anda uji dan menemukan solusi ini berfungsi, dll.
Barracuda
@Barracuda saya sudah memilih, Anda benar tentang info, Ini berfungsi untuk saya di Ubuntu 16.10 64 Bit Server OS :)
Jaymin Gajjar
20

Jika Anda ingin variabel lingkungan ini tersedia untuk semua pengguna dan saat sistem dimulai, Anda dapat menambahkan berikut ini ke /etc/profile.d/java.sh (buatlah jika perlu):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Kemudian di jalankan terminal:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Pertanyaan kedua saya adalah - haruskah itu menunjuk ke java-6-sun atau java-6-sun-1.6.0.24?

Itu harus selalu mengarah ke java-7-oraclesymlink itu ke yang terbaru diinstal (dengan asumsi Anda menginstal Java dari repositori Ubuntu dan sekarang dari unduhan yang tersedia di oracle.com).

Jits
sumber
12

java 6

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

atau java 7

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

Roman Rhrn Nesterov
sumber
10

Jika Anda melakukan pengembangan apa pun, Anda perlu mengarahkan ke JDK (Java Development Kit). Jika tidak, Anda dapat mengarahkan ke JRE (Java Runtime Environment).

JDK berisi semua yang dimiliki JRE dan banyak lagi. Jika Anda hanya menjalankan program Java, Anda dapat mengarahkan ke JRE atau JDK.

Anda harus mengatur JAVA_HOME berdasarkan Java saat ini yang Anda gunakan. readlinkakan mencetak nilai dari tautan simbolik untuk Java saat ini dan sedakan menyesuaikannya ke direktori JRE:

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

Jika Anda ingin mengatur JAVA_HOME ke JDK, Anda harus membuka satu folder lagi:

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

Jika Anda ingin menggunakan versi Java tertentu saat beberapa JDK diinstal, hanya menyetel JAVA_HOME mungkin tidak berfungsi.

Anda perlu menggunakan sudo update-alternatives --config javauntuk mengatur Java default.

Lihat /ubuntu/121654/how-to-set-default-java-version .

prosseek
sumber
5

Lihat ini ; Lari

sudo  update-java-alternatives --list

untuk mencantumkan semua penginstalan Java pada mesin menurut nama dan direktori, lalu jalankan

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

untuk memilih JRE / JDK yang akan digunakan.

Jika Anda ingin menggunakan JDK / JRE yang berbeda untuk setiap tugas Java, Anda dapat menjalankan update-alternatif untuk mengkonfigurasi 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, javaws, dll). Lalu

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

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

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

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

untuk JRE, atau

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

untuk JDK.

WillC
sumber
Pendekatan lain:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg