Bagaimana cara mengatur JAVA_HOME untuk Java?

303

Saya telah menginstal versi Java. Bagaimana kita dapat mengatur $JAVA_HOMEvariabel lingkungan dengan benar?

Gaurav Agarwal
sumber

Jawaban:

422

Anda dapat mengatur Anda JAVA_HOMEdi /etc/profilesaat Petronilla Escarabajo menyarankan. Tetapi lokasi yang dipilih untuk JAVA_HOMEatau variabel sistem apa pun adalah /etc/environment.

Buka /etc/environmentdi editor teks apa pun seperti nanoatau geditdan tambahkan baris berikut:

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

(jalur java bisa berbeda)

Gunakan sourceuntuk memuat variabel, dengan menjalankan perintah ini:

source /etc/environment

Kemudian periksa variabelnya, dengan menjalankan perintah ini:

echo $JAVA_HOME

Memperbarui

Biasanya sebagian besar sistem linux sumber / etc / environment secara default. Jika sistem Anda tidak melakukan itu tambahkan baris berikut ke ~/.bashrc(Terima kasih @ pje)

source /etc/environment
Manula Waidyanatha
sumber
2
Ketika saya mencoba menjalankan Android Studio (yang memiliki IntelliJ IDEA sebagai pangkalan), saya memiliki pesan kesalahan yang sangat mirip dengan @ advokat: "'tools.jar' tampaknya tidak ada di classpath Android Studio." Setelah mengutak-atik JAVA_HOME tanpa hasil, saya memutuskan untuk melihat studio.sh, shellscript yang memulai Android Studio. Sebagai tebakan liar, saya menetapkan JDK_HOME dengan nilai yang sama dengan yang diharapkan untuk JAVA_HOME, dan voila! Itu diinstal tanpa masalah besar.
Hilton Fernandes
3
Bagi mereka yang melakukan pengembangan perangkat lunak, jangan letakkan JAVA_HOME di / etc / environment kecuali Anda ingin melakukan reboot setiap kali Anda mengganti versi JDK.
HDave
2
Ini adalah solusi sementara, seperti yang ditunjukkan orang lain. Tidak ada yang ingin menjalankan sumber setiap kali mereka memulai ulang bash mereka.
yuranos87
6
Seperti yang telah ditunjukkan orang lain, ini tidak tetap di antara sesi terminal. Apa yang saya lakukan untuk mengatasinya adalah dengan menambahkan baris source /etc/environmentke bagian atas file konfigurasi bash saya ~/.bashrcsehingga memuat semua pengaturan lingkungan saya saat startup. Bekerja untuk saya sejauh ini.
PT.
2
@sedulam Saya memperbarui jawabannya
Manula Waidyanatha
79

Untuk mengatur JAVA_HOMEvariabel lingkungan, lakukan hal berikut:

  1. Luncurkan Terminal dengan menekan Ctrl+ Alt+ Tdi keyboard Anda.
  2. Masukkan perintah berikut:
    $gksudo gedit /etc/environment
  3. Tergantung di mana Anda menginstal Java Anda, Anda harus memberikan path lengkap. Untuk contoh ini, saya menginstal Oracle JDK 7 di /usr/lib/jvm/java-7-oracledirektori.
    Gulir ke akhir file dan masukkan yang berikut ini:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Simpan file Anda dan keluar dari gedit .
  5. Terakhir, muat ulang sistem PATH dengan perintah berikut:
    $. /etc/environment

Metode di atas akan menghemat kerumitan karena harus menjalankan perintah setiap kali Anda masuk ke komputer Anda.

Petronilla Escarabajo
sumber
5
Bagaimana . / etc / lingkungan bekerja?
Sudip Bhandari
1
Apakah penambahan exportperintah diperlukan dalam /etc/environment?
pkaramol
@ pkaramol Saya harus menambahkan JAVA_HOME ekspor pada 16.04LTS untuk membuatnya dimuat saat startup.
Adeen-s
3
@ adeen-s Anda menambahkan exportke baris /etc/environmentdan itu membantu? File itu berisi definisi variabel yang diuraikan sebagai =-pasangan nama-nilai yang direvisi; isinya tidak dieksekusi sebagai perintah. (Lihat man pam_env.) Jadi, kecuali Anda secara terpisah memperlakukan file seolah-olah itu adalah skrip (seperti dengan meneruskan /etc/environmentke bash's ./ sourcebuiltin), saya tidak berharap itu berfungsi.
Eliah Kagan
> Bagaimana. / etc / lingkungan bekerja? -. (dot) memuat perintah dari file askubuntu.com/a/232938/189965
Roman Bekkiev
37

Jika Anda tidak tahu path dan Anda hanya memiliki openJDK diinstal, Anda bisa mengetik update-alternatives --config javadan Anda harus menemukan path. Untuk mengatur variabel Anda dapat menulis JAVA_HOME=<PATH>diikuti oleh export JAVA_HOME. Perhatikan tidak ada ruang saat mendeklarasikan variabel. Untuk memeriksa apakah variabel disimpan, Anda cukup mengetik echo $JAVA_HOMEuntuk memverifikasi.

Erro
sumber
Ini sepertinya statis. Jika saya menghapus openjdk-7 dan menginstal openjdk-9, bukankah JAVA_HOME akan menunjuk ke tempat yang salah? Bagaimana bisa dibuat dinamis?
DavidJ
3
Dengan Anda mengubahnya secara manual. Sekali lagi, ANDA adalah caranya menjadi dinamis ....
HDave
Yang dimaksud @HDave adalah bahwa Dalam kasus tertentu, Anda mungkin ingin JAVA_HOME menunjuk ke versi java tertentu, jadi membuat pembaruan JAVA_HOME dinamis mungkin bukan yang Anda inginkan.
Maciej
Saya suka jawaban ini. Saya diuji dengan gema dan melihat jalan saya. Namun, saya bingung mengapa saya masih mendapatkan variabel lingkungan JAVA_HOME tidak disetel ketika saya menjalankan mvn -versi
Winnemucca
1
Saya menulis jawaban ini kembali ketika saya lebih bodoh. Mengatur variabel seperti yang dijelaskan hanya akan memengaruhi sesi terminal Anda saat ini, dan tidak akan bertahan. Cara yang benar adalah dengan menjalankan update-alternatives --install <link> <name> <target> <priority> misalnya:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro