ข้อผิดพลาด JAVA_HOME ขณะสร้าง maven เวอร์ชัน 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

ฉันอัพเกรด OSX เป็น 10.8.4 แล้ว หลังจากอัปเกรด OSX ฉันได้อัปเกรด JDK และ JRE ของฉันเป็น 7 แต่ฉันได้รับข้อผิดพลาดด้านบนเมื่อฉันพยายามสร้างโครงการ maven

เมื่อฉันวิ่ง ls -al /System/Library/Frameworks/JavaVM.framework/Versions/

ฉันได้รับคำตอบด้านล่าง

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

สำหรับสิ่งนี้ ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

ฉันไม่เห็นเนื้อหาใด ๆ ใน CurrentJDK เพิ่มเติม

ในการวิ่ง /usr/libexec/java_home

ฉันเข้าใจ:

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

ฉันค่อนข้างใหม่ในการทำงานกับ OS X ให้ฉันรู้ว่าฉันอาจพลาดประเด็นใด ๆ ที่ยังคงประสบความสำเร็จอยู่


คุณสามารถเรียกใช้echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/binและls -al /System/Library/Frameworks/JavaVM.framework/Versions/และเพิ่มผลให้คำถาม?
nohillside

@patrix .bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc และ. profile มีคำสั่งข้างต้นที่กล่าวถึงในนั้น ..
arvind406

@Patrix .. ฉันเห็นว่าเส้นทาง java ไม่ได้รับจากไฟล์ bashrc เมื่อฉันตั้งค่า JAVA_HOME จากเทอร์มินัลแยกกันเท่านั้นฉันสามารถสร้างโครงการได้ ทำไมสิ่งนี้ถึงเกิดขึ้นเช่นนี้ ความคิดใด ๆ
arvind406

คำตอบ:


9

Apple แนะนำให้ตั้ง JAVA_HOME เป็น“ / usr / libexec / java_home“

สิ่งที่ได้ผลสำหรับฉันคือการพันรอบ $ () ดังนั้นฉันจึงสิ้นสุดการกำหนดค่า JAVA_HOME เช่น $ (/ usr / libexec / java_home) ด้วยคำสั่งต่อไปนี้:

vim ~/.bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
source ~/.bash_profile

สิ่งนี้ใช้ได้สำหรับฉันอย่างสมบูรณ์แบบ!
rdegges

2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java หากมีอยู่คือ Java ที่ให้บริการโดย Apple ซึ่งเวอร์ชันล่าสุดจะเป็น JRE 1.6

ในการใช้ Oracle JDK (java 7 ที่คุณพูดถึง) ให้ใช้พา ธ / usr / bin / java หากคุณได้ติดตั้งไว้อย่างสมบูรณ์ โปรดทราบว่า JRE นั้นมีไว้สำหรับ Java applets เท่านั้นและจะไม่มีผลกับ / usr / bin / java

สำหรับข้อมูลเพิ่มเติมโปรดดูเอกสารการติดตั้ง Oracle

และบันทึกจากที่นั่น

ในการรัน Java เวอร์ชันอื่นให้ระบุพา ธ เต็มหรือใช้เครื่องมือ java_home:

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

สำหรับข้อมูลเพิ่มเติมดูที่ java_home man page (1)


.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH ส่งออก CATALINA_HOME = / Library / Tomcat / Home
arvind406

@arvind ความคิดเห็นเหล่านั้นหมายความว่าอย่างไร
user151019

@ arvind406 ใช่ แต่นั่นจะเพิ่มหรือถามเกี่ยวกับคำตอบของฉัน?
user151019

ความคิดเห็นก่อนหน้านี้แสดงความคิดเห็นในหน้าต่างผิด ขอโทษ. หลังจากอัปเกรดเป็น 10.8 OSX ฉันได้อัพเกรด JDK และ JRE เป็น 7 ฉันได้อัปเดตคำถามอีกครั้ง กรุณาดูและแจ้งให้เราทราบหากฉันจะผิดที่ใดก็ได้ ในการใช้คำสั่งนี้/usr/libexec/java_homeฉันจะได้รับ/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
arvind406

@ Mark .. ฉันเห็นว่าเส้นทางไม่ได้รับการดึงข้อมูลจากไฟล์ bashrc เมื่อฉันตั้งค่า JAVA_HOME จากเทอร์มินัลแยกกันเท่านั้นฉันสามารถสร้างโครงการได้ ทำไมสิ่งนี้ถึงเกิดขึ้นเช่นนี้ ความคิดใด ๆ
arvind406

1

ตามลิงค์นี้: https://stackoverflow.com/a/44564303/5005676 หากคุณเห็นสคริปต์ mvn: รหัสล้มเหลวที่นี่ ---

ขั้นตอนสำหรับการดีบักและแก้ไข:

ขั้นตอนที่ 1: เปิดสคริปต์ mvn /Users/Username/apache-maven-3.0.5/bin/mvn (เปิดด้วยคำสั่งน้อยเช่น: less /Users/Username/apache-maven-3.0.5/bin/mvn)

ขั้นตอนที่ 2: ค้นหารหัสด้านล่างในสคริปต์:

  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

ขั้นตอนที่ 3: มันเกิดขึ้นเพราะไม่ได้ตั้งค่าตัวแปร JAVACMD ดังนั้นจึงแสดงข้อผิดพลาด

หมายเหตุ: ในการแก้ไข

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/

คีย์: หากคุณต้องการให้เป็น emacs.profile แบบเปิดถาวร

โพสต์คำสั่งและกด Ctrl-x Ctrl-c (save-buffers-kill-terminal)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.