Kesalahan JAVA_HOME saat maven build, Versi OSX-10.8.4

10
Error: JAVA_HOME is not defined correctly.
  We cannot execute
  /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java

Saya telah meningkatkan OSX saya ke 10.8.4. Setelah peningkatan OSX saya telah meningkatkan JDK dan JRE saya ke 7. Tapi saya mendapatkan kesalahan di atas ketika saya mencoba untuk membangun proyek pakar.

Ketika saya berlari ls -al /System/Library/Frameworks/JavaVM.framework/Versions/

Saya mendapatkan respons di bawah ini

drwxr-xr-x  11 root  wheel  374 Jul 22 22:33 .
drwxr-xr-x  10 root  wheel  340 Jul 22 18:30 ..
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6.0 -> CurrentJDK
drwxr-xr-x   7 root  wheel  238 Jul 22 18:30 A
lrwxr-xr-x   1 root  wheel    1 Jul 22 18:30 Current -> A
lrwxr-xr-x   1 root  wheel   59 Jul 22 18:30 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

Untuk ini ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

Saya tidak melihat konten apa pun di CurrentJDK lebih lanjut.

Sedang berlari /usr/libexec/java_home

Saya mendapat:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Saya cukup baru dalam bekerja dengan OS X. Beri tahu saya jika saya masih melewatkan poin apa pun untuk membuatnya berhasil.

arvind406
sumber
Bisakah Anda menjalankan echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bindan ls -al /System/Library/Frameworks/JavaVM.framework/Versions/dan menambahkan hasilnya ke pertanyaan?
nohillside
@patrix .bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc dan .profile memiliki perintah di atas yang disebutkan di dalamnya ..
arvind406
@Patrix .. Saya melihat bahwa path java tidak diambil dari file bashrc. Ketika saya mengatur JAVA_HOME dari terminal secara terpisah hanya maka saya dapat membangun sebuah proyek. Kenapa ini bisa terjadi seperti ini? Ada ide ?
arvind406

Jawaban:

9

Apple merekomendasikan untuk mengatur JAVA_HOME menjadi "/ usr / libexec / java_home".

Apa yang berhasil bagi saya adalah membungkus ini sekitar $ (). Jadi saya akhirnya mengkonfigurasi JAVA_HOME seperti $ (/ usr / libexec / java_home) dengan perintah berikut:

vim ~/.bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
source ~/.bash_profile
hcpl
sumber
Ini bekerja dengan baik untuk saya!
rdegges
2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java jika ada adalah Java yang disediakan oleh Apple yang versi terbarunya akan menjadi JRE 1.6.

Untuk menggunakan Oracle JDK (java 7 yang Anda sebutkan) gunakan path / usr / bin / java jika Anda telah menginstalnya sepenuhnya. Perhatikan bahwa JRE hanya untuk applet Java dan karenanya tidak mempengaruhi / usr / bin / java

Untuk informasi lebih lanjut, lihat dokumentasi instalasi Oracle

dan perhatikan dari sana

Untuk menjalankan versi Java yang berbeda, tentukan path lengkap, atau gunakan alat java_home:

/usr/libexec/java_home -v 1.7.0_06 --exec javac -version

Untuk informasi lebih lanjut, lihat halaman manual java_home (1).

pengguna151019
sumber
.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH export CATALINA_HOME = / Library / Tomcat / Home
arvind406
@ Arvind apa arti komentar itu?
user151019
@ arvind406 ya tapi apa yang menambah atau bertanya tentang jawaban saya?
user151019
komentar sebelumnya dikomentari di jendela yang salah. Permintaan maaf. Setelah memutakhirkan ke 10.8 OSX saya telah meningkatkan JDK dan JRE ke 7. Saya telah memperbarui pertanyaan sekali lagi. silakan lihat dan beri tahu saya jika ada yang salah. Pada menjalankan perintah ini /usr/libexec/java_homesaya mendapatkan/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
arvind406
@ Mark .. Saya melihat bahwa path tidak diambil dari file bashrc. Ketika saya mengatur JAVA_HOME dari terminal secara terpisah hanya maka saya dapat membangun sebuah proyek. Kenapa ini bisa terjadi seperti ini? Ada ide ?
arvind406
1

Ikuti tautan ini: /programming//a/44564303/5005676 Jika Anda melihat skrip mvn: Kode gagal di sini ---

Langkah-langkah untuk debugging dan memperbaiki:

Langkah 1: Buka skrip mvn / Pengguna / Pengguna/apache-maven-3.0.5/bin/mvn (Buka dengan perintah kurang seperti: less / Pengguna / Pengguna / Pengguna /apache-maven-3.0.5/bin/mvn)

Langkah 2: Temukan kode di bawah ini dalam skrip:

  if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly."
  echo "  We cannot execute $JAVACMD"
  exit 1
fi

Langkah 3: Itu terjadi karena variabel JAVACMD tidak disetel. Jadi ini menampilkan kesalahan.

Catatan: Untuk Memperbaikinya

export JAVACMD=Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/

Kunci: Jika Anda ingin itu menjadi open emacs.profile permanen

memposting perintah dan tekan Ctrl-x Ctrl-c (save-buffer-kill-terminal).

Shubham Verma
sumber