Lỗi JAVA_HOME khi xây dựng maven, Phiên bản 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

Tôi đã nâng cấp OSX của mình lên 10.8.4. Sau khi nâng cấp OSX, tôi đã nâng cấp JDK và JRE của mình lên 7. Nhưng tôi gặp lỗi ở trên khi tôi đang cố gắng xây dựng dự án maven.

Khi tôi chạy ls -al /System/Library/Frameworks/JavaVM.framework/Versions/

Tôi nhận được phản hồi dưới đây

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

Đối với điều này ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

Tôi không thấy bất kỳ nội dung nào trong CurrentJDK.

Đang chạy /usr/libexec/java_home

Tôi có:

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

Tôi còn khá mới mẻ khi làm việc với OS X. Hãy cho tôi biết nếu tôi có thể đã bỏ lỡ bất kỳ điểm nào trong việc làm cho nó thành công.


Bạn có thể chạy echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/binls -al /System/Library/Frameworks/JavaVM.framework/Versions/thêm kết quả cho câu hỏi?
nohillside

@patrix .bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc và .profile có các lệnh trên được đề cập trong đó ..
arvind406

@Patrix .. Tôi thấy rằng đường dẫn java không được truy xuất từ ​​tệp bashrc. Khi tôi chỉ đặt riêng JAVA_HOME từ thiết bị đầu cuối thì tôi có thể xây dựng một dự án. Tại sao điều này có thể xảy ra như thế này? Bất kỳ ý tưởng ?
arvind406

Câu trả lời:


9

Apple khuyên bạn nên đặt JAVA_HOME thành phiên bản / usr / libexec / java_home.

Những gì làm việc cho tôi là gói này khoảng $ (). Vì vậy, tôi đã kết thúc việc cấu hình JAVA_HOME như $ (/ usr / libexec / java_home) bằng các lệnh sau:

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

Điều này làm việc cho tôi hoàn hảo!
rdegges

2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java nếu nó tồn tại là Java do Apple cung cấp, trong đó phiên bản mới nhất sẽ là JRE 1.6.

Để sử dụng Oracle JDK (java 7 mà bạn đề cập), hãy sử dụng đường dẫn / usr / bin / java nếu bạn đã cài đặt đầy đủ. Lưu ý rằng JRE chỉ dành cho các applet Java và do đó không ảnh hưởng đến / usr / bin / java

Để biết thêm thông tin, xem tài liệu cài đặt của Oracle

và lưu ý từ đó

Để chạy một phiên bản Java khác, chỉ định đường dẫn đầy đủ hoặc sử dụng công cụ java_home:

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

Để biết thêm thông tin, hãy xem trang man java_home (1).


.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH xuất CATALINA_HOME = / Library / Tomcat / Home
arvind406

@arvind những ý kiến ​​đó có nghĩa là gì?
dùng151019

@ arvind406 có nhưng điều đó thêm hoặc hỏi gì về câu trả lời của tôi?
dùng151019

ý kiến ​​trước đó đã được bình luận trong cửa sổ sai. Lời xin lỗi. Sau khi nâng cấp lên 10.8 OSX, tôi đã nâng cấp JDK và JRE lên 7. Tôi đã cập nhật câu hỏi một lần nữa. vui lòng xem và cho tôi biết nếu tôi đi sai ở bất cứ đâu. Khi chạy lệnh này, /usr/libexec/java_hometôi nhận được/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
arvind406

@Mark .. Tôi thấy rằng đường dẫn không được lấy từ tệp bashrc. Khi tôi chỉ đặt riêng JAVA_HOME từ thiết bị đầu cuối thì tôi có thể xây dựng một dự án. Tại sao điều này có thể xảy ra như thế này? Bất kỳ ý tưởng ?
arvind406

1

Theo liên kết sau: /programming//a/44564303/5005676 Nếu bạn thấy tập lệnh mvn: Mã bị lỗi ở đây ---

Các bước để gỡ lỗi và sửa lỗi:

Bước 1: Mở tập lệnh mvn /Users/Username/apache-maven-3.0.5/bin/mvn (Mở bằng lệnh less như: less /Users/Username/apache-maven-3.0.5/bin/mvn)

Bước 2: Tìm hiểu đoạn mã dưới đây trong kịch bản:

  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

Bước 3: Nó đang xảy ra vì biến JAVACMD không được đặt. Vì vậy, nó hiển thị lỗi.

Lưu ý: Để khắc phục

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/

Key: Nếu bạn muốn nó là emacs.profile mở vĩnh viễn

gửi các lệnh và nhấn Ctrl-x Ctrl-c (save-buffers-kill-terminal).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.