JAVA_HOME tidak didefinisikan dengan benar


14

Saya menginstal java jdk hotspot 1.7. Saat saya mengetik java -versionsaya mendapatkan:

java version "1.7.0" 
Java(TM) SE Runtime Environment (build 1.7.0-b147)

Ini benar.

Dan saya mencoba menginstal maven, dan menambahkan ke /etc/environmentfile:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0
M2_HOME=/usr/local/apache-maven/apache-maven-3.0.4
MAVEN_HOME=/usr/local/apache-maven/apache-maven-3.0.4
M2=/usr/local/apache-maven/apache-maven-3.0.4/bin

Sekarang, ketika saya mengetik mvn, saya mendapatkan:

Error: JAVA_HOME is not defined correctly.   We cannot execute
”/usr/lib/jvm/jdk1.7.0”/bin/java

Namun saya tidak meletakkan "tanda untuk JAV_HOME var di file lingkungan.

Itu mencoba lari dari

”/usr/lib/jvm/jdk1.7.0”/bin/java

jalan, Sebenarnya seharusnya

/usr/lib/jvm/jdk1.7.0/bin/java

Saat aku memerintah

$JAVA_HOME

Saya mendapatkan:

bash: ”/usr/lib/jvm/jdk1.7.0”: No such file or directory

Saya yakin path ( /usr/lib/jvm/jdk1.7.0) benar.


Bisakah Anda melakukan ls -al /usr/lib/jvmdan mengonfirmasi bahwa 'jdk1.7.0' adalah format untuk nama direktori? Saat menggunakan Oracle, mereka cenderung menggunakan nama folder yang aneh
— Thomas Ward

ls /usr/lib/jvm/java-7dan ls "/usr/lib/jvm/java-7"/binhasilkan, dan harus menghasilkan hasil yang sama untuk saya (yang tidak kosong). Bagian terakhir, java-7, adalah hasil dari modifikasi manual - itu bisa dan akan sedikit berbeda untuk Anda. Verifikasi, bahwa folder tersebut ada (jdk1.7.0).
— pengguna tidak diketahui

Saya dapatkan total 44 drwxr-xr-x 3 root root 4096 Jun 28 01:57 . drwxr-xr-x 184 root root 36864 Jun 28 01:34 .. drwxr-xr-x 10 root root 4096 Jun 27 23:30 jdk1.7.0 setelah menjalankan ls -al /usr/lib/jvm perintah ini
— Kamoliddin

Perhatikan bahwa untuk melihat variabel dalam konsol Anda, Anda diharapkan untuk mengetik: echo $VARNAME. Jika Anda hanya melakukannya $VARNAMEmaka ia akan mengeksekusi apa yang ada dalam variabel itu.
— Alexis Wilke

Jawaban:


15

JAVA_HOMEharus ditetapkan dengan nama direktori yang berisi satu bindirektori yang berisi executable Java (khususnya, javaitu sendiri).

Dengan anggapan Anda memiliki /usr/lib/jvm/jdk1.7.0direktori, direktori tersebut mungkin berisi jresubdirektori yang berisi bindirektori yang berisi javadan executable terkait.

Jadi Anda mungkin harus menetapkan JAVA_HOMEuntuk /usr/lib/jvm/jdk1.7.0/jredaripada /usr/lib/jvm/jdk1.7.0.


Menginstal JDK, bukan hanya JRE yang biasanya mengarah ke direktori JDK yang berisi direktori bin, serta direktori JRE, yang berisi direktori direktori bin. Tetapi JAVA_HOMEselalu diatur ke dir induk, bukan ke jredir.
— pengguna tidak diketahui

Menarik, saya perlu mengaturnya ke jdk no? Saya akan menulis kode dalam java, kompilasi, deploy, dll.
— Kamoliddin

@Kamoliddin Jika Maven menggunakan $JAVA_HOMEuntuk mengetahui di mana javacdan binari pengembangan lainnya, maka ya, Anda harus mengaturnya ke jdkdirektori yang berisi bindirektori yang berisi binari tersebut.
— Eliah Kagan

Terima kasih, saya tidak tahu, itu berhasil setelah restart, saya pikir saya tidak perlu me-restart agar perubahan diterapkan. Saya tidak mengubah apa pun. Itu berhasil.
— Kamoliddin

Tidak yakin mengapa dia menggunakan jdk1.7.0 sama sekali .. /usr/lib/jvm/javaharus cukup untuk keduanya javadan javac. Alternatif menangani hal ini
— Brian
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.