maven 빌드 중 JAVA_HOME 오류, OSX-10.8.4 버전 1 root

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 작업에 익숙하지 않습니다. 여전히 성공을 거둔 시점을 놓쳤다면 알려주십시오.



답변

Apple은 JAVA_HOME을 “/ usr / libexec / java_home”으로 설정하는 것이 좋습니다.

나를 위해 일한 것은 이것을 $ () 주위에 포장하는 것이 었습니다. 그래서 다음 명령으로 $ (/ usr / libexec / java_home)과 같은 JAVA_HOME을 구성했습니다.

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


답변

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java 존재하는 경우 최신 버전이 JRE 1.6 인 Apple에서 제공 한 Java입니다.

Oracle JDK (사용하는 Java 7)를 사용하려면 / usr / bin / java 경로를 완전히 설치 한 경우 사용하십시오. JRE는 Java 애플릿 전용이므로 / usr / bin / java에는 영향을 미치지 않습니다.

자세한 내용은 Oracle 설치 설명서를 참조하십시오.

거기에서 메모

다른 버전의 Java를 실행하려면 전체 경로를 지정하거나 java_home 도구를 사용하십시오.

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

자세한 내용은 java_home (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과 같은 less 명령으로 열기)

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)를 누르십시오.


답변