macOS X 10.6에서 JAVA_HOME 환경 변수를 어떻게 설정해야합니까?


436

쉘 스크립트를 사용하여 JAVA_HOME환경 을 구성하는 많은 Java 응용 프로그램은 환경 변수를 사용 하여 올바른 버전의 Java를 시작하고 JRE JAR을 찾습니다.

macOS X 10.6에서 다음 경로가이 변수에 유효한 것 같습니다

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

이 중 일부는 Java Preference 창에 정의 된 실제 현재 VM에 대한 심볼릭 링크입니다.

그러나 어느 것을 사용해야합니까, 아니면 어느 것을 사용해야합니까?


답변:


849

방금 JAVA_HOME해당 명령의 출력으로 설정 하면 Java 환경 설정에 지정된 Java 경로가 제공됩니다. 다음 .bashrc은이 변수를 설정하는 내 파일 의 스 니펫입니다 .

export JAVA_HOME=$(/usr/libexec/java_home)

그 기술에는 아무런 문제가 없었습니다.

때로는 값을 JAVA_HOME이전 버전의 Java 로 변경해야합니다 . 예를 들어 유지 관리하는 하나의 프로그램에는 OS X에서 32 비트 Java 5가 필요하므로 해당 프로그램을 사용할 때 다음 JAVA_HOME을 실행하여 설정 합니다.

export JAVA_HOME=$(/usr/libexec/java_home -v 1.5)

java_home당신의 길에 없는 사람들 을 위해 다음과 같이 추가하십시오.

sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home

참고 문헌 :


20
마운틴 라이언도 그것
sghill

57
매버릭스에게도 유효
Pascal

42
여전히 요세미티에 유효합니다. ;)
Geoffrey Wiseman

42
엘 캐피 탄. 검사!
gattshjoty

11
여전히 Mojave
Keuha에

40

또한 JDK를 반영하도록 PATH를 설정하는 것이 흥미 롭습니다. JAVA_HOME을 추가 한 후 ( 'mipadi'에서 인용 한 예제로 수행 가능) :

export JAVA_HOME=$(/usr/libexec/java_home)

~ / .profile에도 추가하십시오.

export PATH=${JAVA_HOME}/bin:$PATH

추신 : OSX의 경우 일반적으로 .bashrc 대신 HOME 디렉토리에 .profile을 사용합니다.


기본 bash를 실행하는 OSX의 경우 일반적으로 bash .bash_profile를 사용합니다. generic보다 왜 사용 .profile합니까?
LeeGee

1
때문에 .profile일반적인, 그것은 작동합니다 sh또는 bash반면, .bash_profile독점이다 bash. 또한이 그 사용하는 앱의 설정을 분리 .bash_profile처럼 MacPorts. 그러나 두 가지 중 하나를 안전하게 사용할 수 있습니다. 자세한 내용은 여기를보십시오
lucasarruda

1
— 참고로 귀하가 제공 한 링크는 bash (즉, 기본적으로)에서 .bash_profileoverrides를 사용한다는 의심을 확인 .profile합니다.
LeeGee

@LeeGee 그렇습니다 . 모든 변형에 대해 일반적 .bash_profile이지만 .profile일반적 이기 때문에 그렇게합니다 sh.
lucasarruda

1
에 OS가 / X 박았 링크를 때문에 java당신의 것은 /usr/bin명시 적으로 추가 할 필요가 안 $JAVA_HOME경로에.
Zac

20

나는 데 MAC OS X (시에라) 10.12.2를 .

다음 단계에 따라 JAVA_HOMEReact Native (Android 앱용) 에서 작동하도록 설정했습니다 .

  • 터미널을 엽니 다 (Command + R, 터미널 유형, Enter 키 누르기).

  • ~ / .bash_profile에 다음 행을 추가하십시오 . export JAVA_HOME=$(/usr/libexec/java_home)

  • 이제 다음 명령을 실행하십시오. source ~/.bash_profile

  • 다음 명령을 입력하여 JAVA_HOME 의 정확한 값을 확인할 수 있습니다 . echo $JAVA_HOME

반환되는 값 (출력)은 다음과 같습니다. /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

그게 다야.


도움이됩니다. 감사합니다. 그러나 마지막 단계를 포함하여 잃어버린 JAVA_HOME을 .bashrc / .bash_profile / .zshrc / 등의 반환 값으로 설정하고 있다고 생각합니다. 실수하면 수정하십시오.
프롤레타리아

2
필요하지 않습니다. 내 경우에는, $JAVA_HOME의미 $(/usr/libexec/java_home)$(/usr/libexec/java_home) 내부적으로 불린다 /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home시스템에 의해.
hygull

1
알았다. 내 경우에는 필요했습니다. 감사.
프롤레타리아

14

Mac OS 10.6.8에 있습니다.

나를 위해 가장 쉬운 해결책은 간단하게 넣는 것입니다.

$ export JAVA_HOME=$(/usr/libexec/java_home)

작동하는지 테스트하려면

$ echo $JAVA_HOME

이것은 보여준다

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

당신은 또한 테스트 할 수 있습니다

$ which java


9

나는 사용하는 경향이있다 /Library/Java/Home. 환경 설정 창이 작동하는 방식은 원하는 버전으로 최신 상태 여야합니다.


/ bin 구식 일 수 있으므로 / System / Library / ..가 아닌 / Library / java를 가리키는 지 확인하십시오.
JRun

1
더 이상 정확하지 않습니다. OS X 10.5 이상에서 / usr / libexec / java_home을 사용하여 경로를 찾으십시오.
Kristopher Johnson

8

위의 그래픽 응용 프로그램에서 요세미티에서 더 이상 작동하지 않습니다! 일식처럼, 또는 Spotlight로 시작한 모든 것. (.bash_profile, launchd.conf는 터미널 세션에서만 작동합니다.) 일식을 시작하기 전에 터미널 창을 열고 다음 명령을 내립니다.

launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

(설치 경로와 함께! 전체 경로 대신 $ (/ usr / libexec / java_home)에서도 작동합니다.)

영구 솔루션에 대한 전체 기사를 여기에서보십시오. launchd.conf를 통해 환경 변수를 설정하면 OS X Yosemite / El Capitan / macOS Sierra에서 더 이상 작동하지 않습니까?


2

스택 이 도움 이 되는 것을 발견했습니다 . 동일한 문제가 발생하여 해결할 수 있습니다.

내 자바 경로는 다음과 같습니다.

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

내 안에 넣어야했습니다 .bash_profile.

export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

도움을 바랍니다


2

애플리케이션, 영구 시스템 환경 변수 설정을 언급 한 이후 터미널 설정 건너 뛰기 (macOS Sierra에서 작동; El Capitan에서도 작동) :

launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)

(이것은 JAVA_HOME을 최신 1.8 JDK로 설정합니다. javac 1.8.0_101, javac 1.8.0_131과 같은 서버 업데이트를 겪었을 가능성이 있습니다)
물론 필요와 시스템에 맞게 1.8을 1.7 또는 1.6으로 변경하십시오 (실제로?).


1

다른 답변에서 알 수 있듯이 Java 홈 디렉토리를 찾는 올바른 방법은을 사용하는 것 /usr/libexec/java_home입니다.

이 공식 문서는 애플에 기술 Q & A QA1170 : OS X에 중요 자바 디렉토리 : https://developer.apple.com/library/mac/qa/qa1170/_index.html


이것은 중복입니다!
Franklin Yu

공식 Apple 문서에 대한 링크를 포함하면 중복되지 않습니다. 그러나 그렇다면 올바른 조치는 주석이 아닌 복제로 플래그 지정하는 것입니다.
Kristopher Johnson

답변 을 중복으로 표시 할 수 없기 때문에 의견을 남겼습니다 . 스택 오버플로는 사용자가 질문 을 중복으로 표시 할 수만 있습니다 (불행히도). 링크는 도움이되지만 현재 답변에 대한 의견 (또는 이미 기능이 있으므로 링크로 편집)이 모든 유용한 정보를 하나의 답변으로 집중하기 때문에 더 좋을 것이라고 생각합니다. 스택 오버플로가 새로운 답변을 작성하는 것보다 현재 답변을 수정하는 것을 선호하는 지침이 어딘가에 있다고 생각합니다.
Franklin Yu

1

나를 위해 maven은 .mavenrc파일 을 해결하는 것 같습니다 .

echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc

나는 그것을 너무 집어 들었다고 확신한다. 단지 어디에 있는지 기억할 수 없다.


1

파일 작성 ~/.mavenrc

그런 다음 파일에 붙여 넣습니다.

export JAVA_HOME=$(/usr/libexec/java_home)

테스트

mvn -v


.mavenrc 파일 내에서 Java 버전을 매우 쉽게 변경할 수 있기 때문에이 방법이 마음에 듭니다.
Spindizzy

1

다음 명령을 통해 JAVA_HOME 환경 변수 를 설정하기 전에 기본 터미널 쉘 을 확인하는 것이 좋습니다 .

$ echo $SHELL
/bin/bash

기본 터미널이 / bin / bash (Bash) 인 경우 @hygull 메소드 를 사용해야합니다

기본 터미널이 / bin / zsh (Z Shell) 인 경우 ~ / .zshenv 파일 에서 다음 환경 변수를 사용하여 이러한 환경 변수를 설정해야합니다 .

export JAVA_HOME="$(/usr/libexec/java_home)"

마찬가지로 위에서 언급하지 않은 다른 터미널 유형은 해당 터미널 env 파일에 환경 변수를 설정해야합니다.

이 방법은 macOS Mojave 버전 10.14.6 에서 작동하는지 테스트했습니다 .


-1

Fish Shell 사용자의 경우 다음과 같은 것을 사용하십시오. alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"

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