macOS Mojave (10.14)에서 Lion (10.7)의 JAVA_HOME은 어디에 있습니까?


559

Java는 최신 버전의 macOS에 대한 선택적 패키지입니다.

그러나 일단 설치되면 JAVA_HOME 환경 변수가 올바르게 설정되지 않은 것처럼 보입니다 .



Mac Sierra에서는 jdk와 시스템 환경 설정> Java가있는 / Library / Java / JavaVirtualMachines가 있습니다.이 두 가지의 차이점은 무엇입니까?
vikramvi

다른 질문, 감사합니다
Olivier Refalo

Java 설치가 제대로 완료되지 않았을 가능성을 과소 평가하지 마십시오. 아래의 훌륭한 제안 중 어느 것도 효과가없는 것 같으면 [다시 설치]를 시도하십시오!
MarkHu

답변:


1059

으로 자바 옵션 패키지 또는 오라클 JDK 당신의 다음 줄 중 하나를 추가 설치 ~ / .bash_profile에 따라 환경 변수를 설정합니다 파일을.

export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

업데이트 : Jilles van Gurp 응답을 기반으로 -v 플래그가 추가되었습니다 .


1
알아 둘만 한. 나는 사자에 대한 기능 목록에 너무 흥분하지 않는다고 말해야합니다. 내 사용법을 향상시키는 방법은 많지 않은 것 같습니다.
prodigitalson

1
@Oliver : ewww :-) 아마도 가장 유용한 것이 아닐 것입니다 ... 나는 항상 여러 개의 창을 열어서 화면에 배열하여 한 번에 여러 항목을 볼 수 있습니다 ... 일반적으로 모든 공간에서 다른 레이아웃.
prodigitalson

11
이것은 나를 위해 작동하지 않았다. /System/Library/Frameworks/JavaVM.framework/Home이 작동했습니다.
혼돈 이론

7
매버릭에서도 작동합니다!
cbare

3
Java 11 및 High Sierra의 경우 JAVA_HOME = "$ (/ usr / libexec / java_home -v 11)"내보내기
Willie Z

112

/usr/libexec/java_home디렉토리가 아니라 실행 파일입니다. 현재 구성된 JAVA_HOME을 출력하고 실제로 변경하지는 않습니다. 그것이 Java Preferences 앱의 용도입니다. 제 경우에는 깨져서 실제로 JVM을 올바르게 변경하지 않습니다. 1.7 JVM을 나열하지만 실제로 출력을 변경하지 않고 원하는 모든 항목을 토글 / 언 글링 및 드래그 앤 드롭 할 수 있습니다 /usr/libexec/java_home.

Lion에서 Oracle의 1.7.0 u6을 설치하고 환경 설정에서 기본값으로 설정 한 후에도 여전히 사과 1.6 java 홈을 반환했습니다. 실제로 나를 위해 유일한 해결책은 JAVA_HOME을 수동으로 설정하는 것입니다.

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/

최소한 명령 행에서 실행할 때는 1.7을 사용합니다. /usr/libexec/java_home여전히 1.6을 고집합니다.

업데이트 : OSX의 명령 줄에서 Java 이해 가 어떻게 작동하는지 더 잘 설명합니다.

export JAVA_HOME=`/usr/libexec/java_home -v 1.7` 

그렇게하는 방법입니다. 이것을 1.8로 업데이트하면 잘 작동합니다.


blog.hgomez.net/2012/07이 깨진 하지만 그것은 지금에 링크 대답에 고정 된 것 web.archive.org/web/20140813164713/http://blog.hgomez.net/blog/...
매트 C

수출 JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
Leo Nguyen

83

나에게 Mountain Lion 10.8.2의 경우 가장 많이 투표 한 솔루션이 효과가 없습니다. Oracle을 통해 jdk 1.7을 설치하고 homebrew의 maven을 설치했습니다.

내 솔루션은 homebrew에서 설치 한 hadoop의 hadoop-env.sh 파일에서 가져온 것입니다. ~ / .bash_profile에 아래 문장을 추가하면 작동합니다.

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

이 솔루션은 또한 Oracle에서 Java 1.8이 설치된 OS X Yosemite에서도 작동합니다.


1
Apple에서 Java 6을 설치 한 경우 작동했을 것입니다. 여기서 포인트는 오라클 자바 7을 사용하는 것입니다
올리비에 Refalo

2
이것은 Mavricks에서 잘 작동하지만 java_home 스크립트의 위치는 다릅니다. export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Christopher Frost

1
JAVA_HOME을 설정하는이 방법은 Mac Yosemite에서 maven을 설정하려고했습니다.
Alocus

시에라 10.12 자바 팔에 나를 위해 작품
카낙 소니

41

위의 답변 중 어느 것도 도움이되지 않았습니다. 나는 모든 대답이 더 오래되었다고 가정합니다.OS X

OS X Yosemite 10.10의 경우 다음 단계를 수행하십시오.

좋아하는 텍스트 편집기를 사용하여 엽니 다. ~/.bash_profile

//This command will open the file using vim
$ vim ~/.bash_profile

파일에 다음 줄을 추가하고 저장하십시오 (: vim의 경우 "x").

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

그런 다음 터미널에 다음 두 명령을 입력하여 출력을보십시오.

$ source ~/.bash_profile

$ echo $JAVA_HOME

두 번째 줄에서는 .bash_profile파일 내용을 업데이트 합니다.


당신이 '대'대신 역 인용 부호의 따옴표를 사용 - 나는 당신의 PB 거 같아요
올리비에 Refalo

아니요, 올바른 따옴표를 사용하고 있는데 대신 복사 붙여 넣기를 시도했지만 작동하지 않았습니다. 나는 그것이 효과가 있었기 때문에 대답을 업데이트했습니다.
Giri

@OlivierRefalo 나는 당신이 큰 따옴표 ( ")로 답을 업데이트 한 것을 볼 수 있습니다. 그러나 따옴표 없이도 작동합니다.
Giri

고마워. 그것은 요세미티 10.10에서 나를 위해 일했다
Vijay

2
이것이 실제로 작동하는 유일한 솔루션입니다. 다른 솔루션으로 경로를 추가하면 터미널을 종료하고 경로가 사라질 때까지 임시로 추가됩니다. 영구적으로 추가하려면 경로를 .bash_profile 파일에 저장해야합니다. 한편, 저는 단순성을 위해 vim 대신 nano를 사용했습니다.
Nadeem Jamali

31

Java 9 및 일부 별명에 대한 업데이트.

에서 .bash_profile:

export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`

최신 버전에서는 9그렇지 않습니다 1.9.

활성 Java를 설정하십시오.

export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH

다른 버전간에 전환하기위한 추가 별칭 :

alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'

터미널에서 테스트 :

% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

편집 : Java 10 업데이트

export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'

편집 : Java 11 업데이트

export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'

29

그것을 기대하기 때문에 위, 아마존의 EC2 도구로 나를 위해 작동하지 않았다 bin/java등 아래 JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/Home일했다.


사자인가요? Apple에서 공식 Java 패키지를 얻었습니까, Oracle에서 Java6 / 7을 받았습니까?
Olivier Refalo

나는 그것이 Apple의 Java 패키지라고 생각합니다.
Cawflands

1
@AndrewH 예 나는 똑같은 사실을 발견했습니다. Apple의 Java 패키지를 설치하고 실제 라이브러리 경로 (예 : eclipse.ini에서 -vm을 설정하는 경로)를 발견했습니다. /System/Library/Java/Support/Deploy.bundle/Contents/Home/lib/javaws.jar
noogrub

정보에 대해서 감사드립니다. 어쩌면 내가 너무 간단하지만 OS X가 왜 그렇게 단순한 것을 완전한 혼란으로 만들까요?
Kuberchaun

18

OS X의 경우 다음을 수행 할 수 있습니다.

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`

HFS +는 대소 문자를 구분하지 않습니다.
sufinawaz '10

14

Mac OS X Lion에서 visualgc를 실행하도록 설정하려면 다음을 사용했습니다.

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

1
나는 당신의 제안을 얻지 못했습니다 : 그것이 수출 JAVA_HOME =과 /usr/libexec/java_home 어떻게 다른 가요? 명령은 / usr / libexec 디렉토리 / JAVA_HOME은 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 반환
올리비에 Refalo

visualgc / usr / libexec / java_home 수율 : / usr / libexec / java_home에있는 java.exe가 JDK 디렉토리에 없습니다. JVMSTAT_JAVA_HOME 환경 변수를 설정하고 내 보내서 JRE가 아닌 Sun J2SE 1.5.0 JDK를 포함하는 디렉토리를 참조한 후 다시 시도하십시오.
EGHM

13

다음은 나를 위해 일했습니다. Java 8이 설치된 OSX Yosemite에서 ZSH를 사용하고 있습니다.

다음 명령 /usr/libexec/java_home은 JDK 홈에 대한 경로를 생성합니다.

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

귀하 ~/.zshrc

export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"

제안 된 솔루션과 어떻게 다릅니 까?
Olivier Refalo

제안 된 솔루션과 다르지 않습니다. 이 솔루션은 ZSH, Java 8 및 OSX Yosemite를 사용하는 사람들에게 적합합니다.
Hemanta

OSX Yosemite에 설치된 Java 1.8에서 매력처럼 작동하는 것을 확인했습니다.
Ashoor

일반적인 솔루션은 Java 8, zsh 및 Yosemite에 적합합니다.
yaauie

10

더 나은 (보다 업그레이드 가능한) 방법은 다음을 사용하는 것입니다.

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

bin홈 아래에 있기 때문에 AWS에서도 작동합니다.


1
"더 업그레이드 가능"이라는 문장에 동의하지 않는 경우 / usr / libexec / java_home은 고정 경로가 아닌 경로를 반환하는 exe입니다. 사용하는 jvm 버전에 따라 위의 경로가 일치하지 않습니다
Olivier Refalo

10

1.7.0_21-b12와 같은 최신 Oracle JVM은 다음과 같이 설치됩니다.

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


1
실제로- /usr/libexec/java_home도구는 이러한 Java 버전에 대한 오류를 반환합니다.
Joe Dyndale

1
이는 V1.7의 JRE 다운로드 후 나를 위해 일하는 유일한 해답이다
maxrossello

2
JRE를 설치하는 경우 경로입니다. 대부분의 평가 답변과 의견은 JDK에 관한 것입니다. 같은 것이 아닙니다.
8None1

9

macOS Mojave 10.14.1 및 JAVA 11.0.1의 경우 프로파일을

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

터미널 키를 눌러 확인하십시오.

$JAVA_HOME/bin/java -version

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

1
카탈리나에서 작동합니다. Ty
TuGordoBello

5

내 접근 방식은 다음과 같습니다

.bashrc

export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME

# -- optional
# export PATH=$JAVA_HOME/bin:$PATH

따라서 J6과 J7 간 전환이 매우 쉽습니다.


@AdonisSMU 솔루션을 찾았습니까?
Luccas

3

Macbook air의 정확한 경로로 명시 적으로 설정해야했습니다.

단계는 다음과 같습니다

  1. 시도 echo $JAVA_HOME하지 않으면 (경로가 표시되면) 경로를 사용하여 검색하십시오.sudo find /usr/ -name *jdk
  2. -로 Bash p 편집 sudo nano ~/.bash_profile
  3. JAVA Home에 대한 정확한 경로 추가 (위의 2 단계 경로) export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  4. 저장하고 종료
  5. -를 사용하여 JAVA_Home을 확인하십시오. echo $JAVA_HOME

JAVA 8을 사용하는 Macbook Air에서 MACOS MOJAVE-10.14.2 (18C54)를 실행하고 있습니다.


2

Mac OS X 10.9의 경우 Oracle에서 최신 버전의 JRE를 설치 한 다음 JAVA_HOME을 /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home으로 재설정합니다.

나는 더 좋은 방법이 있다고 확신하지만 나를 일으켰다.

hughsmac : ~ hbrien $ echo $ JAVA_HOME / 라이브러리 /Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home


1
새로운 Mavericks 설치에서는 이것이 나를 위해 일한 유일한 솔루션입니다. sqldeveloper가 여기에있는 jdk 홈을 가리 키 도록해야했습니다 ( 이 스레드 에서 제안한대로 작동하도록하십시오)
chris

2

OSX Yosemite, ZSH 및 Java SE Runtime Environment 8에서 다음을 수행해야했습니다.

$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

~ / .zshrc에서 JAVA_HOME을 export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"


1

Mac OS를 업그레이드 한 후 다음과 같은 문제가 발생했습니다.

  1. cmd> vi ~ / .bash_profile

  2. JAVA_HOME에 대한 라인 추가 / 업데이트 : export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home"

  3. cmd> source ~ / .bash_profile 또는 새 터미널을 엽니 다

jdk 버전이 다를 수 있다고 생각하므로 / Library / Java / JavaVirtualMachines / 아래에있는 버전을 사용하십시오.


1

Mac OS X (Yosemite)에서 여러 버전의 JDK가 필요한 경우 자동 전환을 위해 스크립트를 추가하는 것이 도움이 될 수 있습니다.

~ / .bash_profile 을 편집 하고 다음을 추가하십시오.

function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=`/usr/libexec/java_home -v $@`
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
setjdk 1.7

스크립트는 PATH 에서 다른 JDK 버전을 먼저 제거 하여 새 JDK 버전을 방해하지 않도록합니다. 그런 다음 설치된 JDK 버전을 나열하는 명령 인 / usr / libexec / java_home 을 영리하게 사용 합니다. -v 인수는 말한다 JAVA_HOME을 예를 들어 1.7, 제공된 버전으로 JDK의 경로를 반환합니다. 또한 새로 찾은 JAVA_HOME 디렉토리 의 bin 디렉토리를 가리 키도록 PATH 를 업데이트합니다 . 결국 우리는 단순히 다음을 사용하여 함수를 실행할 수 있습니다

setjdk 1.7

1.7 분기의 최신 설치된 JDK 버전을 선택합니다. 특정 버전을 선택하려면 간단히 실행할 수 있습니다

setjdk 1.7.0_51

대신에. 버전 선택 방법에 대한 자세한 내용을 보려면 / usr / libexec / java_home -V 를 실행하십시오 .

PS ~ / .bash_profile 을 저장 한 후 소싱하는 것을 잊지 마십시오 .


1

Java 11 (JDK 11)의 경우 다음 명령으로 찾을 수 있습니다.

/usr/libexec/java_home -v 11

0

이 답변은 Lion이 아닌 Mountain Lion 과 관련이 있습니다. AWS Command Line Tools를 위해이 작업을 수행해야했습니다. AWS 문서 에 따르면 running 은를which java 반환합니다 /usr/bin/java.

그래서 나는 JAVA_HOME=/usr내 설정 했습니다 .bashrc.

분명히, 그것은 모두 작동하게 만드는 /usr/bin/java상징적 인 링크 /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java입니다.

최신 정보

아래 설명에서 언급했듯이이 JAVA_HOME값은 JAVA_HOME환경 변수를 AWS Command Line Tools 이외의 용도로 사용할 경우 이상적인 솔루션이 아닙니다 . 그러나 문서에 나와있는 것처럼 AWS Command Line Tools에서 잘 작동합니다.


요점은, / usr은 올바른 JAVA_HOME 디렉토리가 아닙니다. bin / java를 찾아도됩니다. 그러나 때로는 빌더 (ant, make)가 JAVA_HOME을 사용하여 lib / tools.jar의 javac 컴파일러를 참조합니다. 솔루션은 실패합니다
Olivier Refalo

아, 정보 주셔서 감사합니다. 네 말이 맞아 답변을 업데이트합니다.
Anjan

0

Mac Yosemite의 경우

JDK 1.7.0_xx가 사용 중입니다

$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

JAVA_HOME

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

이 답변을 유용하게 만들기 위해 더 많은 정보를 추가 할 수 있습니까?
Mika

0

ATO (Australian Tax Office)에서 AUSKEY를 사용하는 사람은 AUSKEY를 제거해야합니다. 이것은 내 JAVA_HOME 문제를 정리했습니다.

MAC 사용자에게는 더 이상 필요하지 않습니다. 야아!


0

High Sierra 10.13.4에서 Fish shell을 사용 하고 Brew를 통해 Java를 설치했습니다.

내가 실행하는 시스템에서 올바르게 설정하기 위해 자동으로 설정되지 않습니다 .

set -U JAVA_HOME (/usr/libexec/java_home)

0

netbeans.conf파일 에 1.8 jdk 버전의 java_home을 설정 하십시오.

/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

주석 해제 라인 :

netbeans_jdkhome="path/to/jdk"

내 경우에는 1.8 jdk의 경로를 설정하십시오.

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"

이 접근법은 Mac OS에서 여러 jdk 버전을 갖도록합니다.


0

Mac의 Fish 터미널 사용자의 경우 (Linux에서도 사용할 수 있다고 생각합니다) 다음과 같이 작동합니다.

set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8       //or whichever version you want as default

-1

맥 사용자를 위해. 자바 8 추가

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

자바 6 :

export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

심판 : http://qiita.com/seri_k/items/e978c1339ce51f13e297

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