maven 빌드 중 JAVA_HOME 오류, 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/binls -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 .. 자바 경로가 bashrc 파일에서 검색되지 않는 것을 알았습니다. 터미널에서 JAVA_HOME을 별도로 설정하면 프로젝트를 빌드 할 수있었습니다. 왜 이런 일이 일어날 수 있습니까? 어떤 아이디어?
arvind406

답변:


9

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

이것은 나를 위해 완벽하게 작동했습니다!
rdegges

2

/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) 매뉴얼 페이지를 참조하십시오.


.profile-> export PATH = $ {JAVA_HOME} / bin : $ PATH export CATALINA_HOME = / 라이브러리 / Tomcat / 홈
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과 같은 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)를 누르십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.