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.

Kamoliddin
sumber
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.

Eliah Kagan
sumber
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