[java] OS X에서 기본 Java (JDK) 버전을 설정하거나 변경하는 방법은 무엇입니까?

Mac에서 Java의 기본 버전을 어떻게 변경할 수 있습니까?



답변

먼저 /usr/libexec/java_home -V다음과 같은 결과를 출력합니다 :

Matching Java Virtual Machines (3):
1.8.0_05, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
1.6.0_65-b14-462, x86_64:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

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

기본값이 되고자하는 버전을 선택하십시오 ( 1.6.0_65-b14-462인수를 위해) :

export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462`

또는 다음과 같이 주요 버전 만 지정할 수 있습니다.

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

이제 실행 java -version하면 다음을 볼 수 있습니다.

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

export JAVA_HOME…쉘의 init 파일에 라인을 추가 하십시오.

Bash의 경우 ( antonyh가 명시한 대로 ) :

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

물고기의 경우 (오르 무 린이 명시한대로)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)


답변

이 답변은 macOS El Capitan 이상 (Sierra, High Sierra, Mojave) 에 개발 목적으로 여러 버전의 JDK 가 설치되어 있을 때 (현재 실행중인 쉘뿐만 아니라) 시스템 전체에서 Java 버전제어 하는 방법을 해결하려는 시도 입니다 . 내가 알 수있는 한 현재 답변 중 어느 것도 그렇게하지 않습니다 (*).

개발자는 여러 개의 JDK를 사용하며 하나에서 다른 것으로 쉽게 전환하려고합니다. 일반적으로 일반적인 용도로는 안정적인 최신 버전이 있고 테스트에는 다른 최신 버전이 있습니다. 그러나 나는 시스템이 (예를 들어 IDE를 시작할 때) 현재 가지고있는 최신 “이른 액세스”버전을 사용하기를 원하지 않습니다. 시스템의 기본값을 제어하고 싶습니다. 최신 안정이어야합니다.

다음 접근 방식은 Oracle JDK 또는 OpenJDK ( 2018 년 10 월 중순 이후에 생성 된 AdoptOpenJDK의 빌드 포함 ) 와 함께 Java 7 ~ 12 에서 작동합니다 (이 문서 작성 시점에 초기 액세스시 ).

타사 도구가없는 솔루션 :

  • 모든 JDK를 기본 위치 () 아래에 두십시오 /Library/Java/JavaVirtualMachines. 시스템은 기본적으로 가장 높은 버전을 선택합니다.
  • JDK가 기본적으로 선택되지 않도록 제외하려면 이름을 Contents/Info.plist로 변경하십시오Info.plist.disabled . 이 JDK는 여전히 JDK를 $JAVA_HOME가리킬 때 사용 하거나 스크립트 또는 구성에서 명시 적으로 참조 할 수 있습니다. 시스템 java명령으로 간단히 무시됩니다 .

시스템 런처는 Info.plist파일 이있는 것 중에서 가장 높은 버전의 JDK를 사용 합니다.

대체 JDK가있는 쉘에서 작업 할 때 기존 답변 ( jenv또는 사용자 정의 별명 / 스크립트 /usr/libexec/java_home등) 중에서 방법을 선택하십시오 .


이 요점에서 조사의 세부 사항 .


(*) 현재 답변은 더 이상 사용되지 않거나 (MacOS El Capitan 또는 Sierra에는 더 이상 유효하지 않음) 단일 JDK 만 해결하거나 시스템 전체 측면을 다루지 않습니다. 많은 사람들 $JAVA_HOME이 변경하는 방법을 설명 하지만 이것은 현재 쉘과 그 쉘에서 시작된 내용에만 영향을 미칩니다. 올바른 파일과 로그 아웃 / 로그인을 변경하지 않는 한 OS 런처에서 시작한 응용 프로그램에는 영향을 미치지 않습니다. jenv와 동일하지만 멋지지만 모두 환경 변수 만 변경한다고 말할 수있는 한 동일한 제한이 있습니다.


답변

위의 답변에 덧붙여, 다음 줄을 내 .bash_profile(또는 .zshrcMacOS 10.15+)에 넣었습니다.

alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"

삽입 후 실행 $ source .bash_profile

다음을 입력하여 Java 8로 전환 할 수 있습니다.

$ j8
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)


답변

/ usr / libexec / java_home에 기반한 작은 어류 기능

function jhome
    set JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end

물고기를 사용하지 않으면 bash에서 비슷한 것을 할 수 있습니다.

#!/bin/bash

jhome () {
  export JAVA_HOME=`/usr/libexec/java_home $@`
  echo "JAVA_HOME:" $JAVA_HOME
  echo "java -version:"
  java -version
}

그런 다음 Java 간을 전환하려면 다음을 수행하십시오.

$> jhome           #switches to latest java
$> jhome -v 1.7    #switches to java 1.7
$> jhome -v 1.6    #switches to java 1.6

심판 : https://gist.github.com/kenglxn/1843d552dff4d4233271


답변

약간 까다 롭지 만 OS X 10.9에 Java 설치 (매버릭스)에 설명 된 단계를 따르십시오 . 기본적으로 별칭을로 업데이트해야합니다 java.

단계별 :

JDK 1.7을 설치 한 후 sudo ln -snf링크를 current로 변경 하려면을 수행해야합니다 java. 이렇게하려면 터미널을 열고 다음 명령을 실행하십시오.

sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

jdk1.7.0_51.jdk설치 한 SDK 버전에 따라 디렉토리 가 변경 될 수 있습니다.

이제 설치된 JAVA_HOME위치를 가리 키도록 설정해야합니다 jdk_1.7.0_xx.jdk. 터미널을 다시 열고 다음을 입력하십시오.

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

파일에 export JAVA_HOME위 의 줄을 추가 .bashrc하여 터미널에서 Java를 영구적으로 가질 수 있습니다


답변

jenv를 사용하는 것은 쉬운 방법입니다.

1. jenv 설치

    컬 -s get.jenv.io | 세게 때리다

2. jenv 구성

    cd ~ / .jenv / 후보자 /
    mkdir 자바
    CD 자바
    mkdir 1.7
    mkdir 1.8

3. jdk 경로를 심볼릭 링크

    ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~ / .jenv / candidates / java / 1.7
    ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / candidates / java / 1.8

4. 모든 설정

스위치 명령 :

jenv 사용 자바 1.8

기본값으로 설정:

jenv 기본 자바 1.7


답변

JRE뿐만 아니라 JDK 설치

/usr/libexec/java_home -v 1.8

준다

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

다음

touch .bash_profile

open -a TextEdit.app .bash_profile

TextEdit은 빈 페이지를 보여줄 수 있습니다.

문서에 추가 :
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

터미널에서 :

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

다음 명령을 시도하십시오 :

javac -version

출력해야합니다 :

javac 1.8.0_111