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


778

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


2
처형 /usr/libexec/java_home은 무엇을 말합니까?
Bart

2
/ usr / libexec / java_home은 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home을 반환합니다
Venkat

다시 부팅해야 할 수도 있습니다. 당신은 그것을 시도 했습니까?
Bart

그래도 컴퓨터와 터미널을 다시 시작했습니다 ... 변경 사항이 없습니다.
Venkat

3
아래 @markhellewell의 높은 투표 답변을 받아 주시겠습니까? 좀 더 빨리 찾을 수있게 도와 주었을뿐입니다. :)
Taytay

답변:


1407

먼저 /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)

2
MattO'Brien @ 내가 그위한 완벽한 솔루션을 제공 할 수 있도록 사용중인 쉘, 당신은 장소에있는 구성에 따라 그것의 일이 ...
markhellewell

11
사람들은 정말 역 따옴표에게 있습니다 export라인
데이비드 웨스트

6
이것은 나를 위해 작동하지 않았습니다. java_home -V 실행 경로를 잡고 export JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home"과 같은 내보내기 명령에 추가하십시오.
oden

68
이것은 Bash에서 작동합니다 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8).-또한 java_home은 부분 일치를 허용하므로 최신 버전을 찾을 때 정식 버전을 포함시킬 필요가 없습니다. 업데이트가 쉬워집니다.
antonyh

14
내보내기에``not ''을 사용하고 있는지 확인하십시오.
블리자드

408

이 답변은 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와 동일하지만 멋지지만 모두 환경 변수 만 변경한다고 말할 수있는 한 동일한 제한이 있습니다.


16
때문에, 내가 찾고 있던 해답 jenv이나 JAVA_HOME시스템 전체의 자바 버전을 설정할 수 있습니다, 즉 하나의 이클립스 사용합니다.
Giovanni Lovato 2016 년

3
@Rodrigo 예, "조사 세부 사항"(위에 링크 됨)에서 언급 한대로 : "JDK 설치도 덮어 씁니다 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. 새 환경 설정 분할 창이 실행되는 것 같습니다. 이것이 내 솔루션에서 발견 한 유일한 예외입니다. thingy는 여전히 JDK9 (최신 설치)를 사용하지만 다른 Java 응용 프로그램은 사용하지 않습니다. "
Hugues M.

2
Java 버전은 / Library / Java / JavaVirtualMachines에 있으며 위의 우수한 작업 솔루션이 해당 컨텍스트 내에 있음을 주목할 가치가 있습니다.
Andrew Kostka

3
정확하게, 이것은이 질문에 대한 최고의 기능적 솔루션입니다. 불행히도.
Aerodynamika

3
이 답변에 대해 충분히 감사하지 않습니다. OS 런처에서이 고정 된 시작 응용 프로그램.
Karthic Raghupathi

248

위의 답변에 덧붙여, 다음 줄을 내 .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)

5
이 자바 9 구문입니다 alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin

3
빠른 전환을위한 멋진 간단한 별칭.
gbonetti

사용 alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"후 입력은 j10당신이 (내 경우 자바 10) 자바의 현재 버전으로 다시 전환 할 수 있습니다
intagli

nvmJava 버전을 전환하는 것과 비슷한 CLI 도구를 만들지 만 약어는 jvm이미 다른 것을 의미합니다.)
Andy

소싱 할 때이 오류가 발생합니다. /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11

56

/ 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


1
이것은 특정 터미널 세션에 대해서만 변경됩니다. 시스템 전체를 변경하기 위해 이것을 업데이트하는 방법이 있습니까?
ENG618

1
함수 export JAVA_HOME=(/usr/libexec/java_home $argv)의 두 번째 줄 대신 작성해야했습니다 jhome.
Daniel AA Pelsmaeker

32

약간 까다 롭지 만 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를 영구적으로 가질 수 있습니다


1
JAVA_HOME 변수를 어떻게 설정합니까? 내가 설정 한 특정 장소가 있습니까?
Venkat

JAVA_HOME을 어디로 내보내나요? 그리고 어디에 저장됩니까?
Venkat

1
답변을 업데이트했습니다. 설치 한 SDK 버전을 알고 있습니까? 폴더 이름은 SDK 버전 번호를 사용하므로 위 명령이 약간 변경 될 수 있습니다.
Trein

최신 버전을 설치
Venkat

변수 JAVA_HOME는 현재 터미널 세션에서 내보내집니다. .bashrc원하는 경우 추가 할 수 있습니다 . 마지막 버전에 명령을 적용하겠습니다.
Trein

32

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


깨끗하고 좋은 해결책.
pinturic

"jenv use java 1.8"대신 "jenv shell 1.8"을 사용해야했습니다. "쉘"은 필요에 따라 "글로벌"또는 "로컬"일 수도 있습니다.
Steve Gelman

1
jenv는 작동 할 때 좋습니다. 그러나 "/ usr / libexec / java_home -V"명령을 실행하여 JAVA_HOME 만 실행하여 사용 된 기본 Java 버전을 "실제로"변경하지 않으므로 권장하지 않습니다. 이로 인해 일부 애플리케이션 (예 : Eclipse)에서 이상한 문제가 발생합니다.
simon

저의 편집증적인 부분 외에도 무언가를 뭉치지 말 것을 권합니다. 사이트가 신뢰할 수 있다고 생각 하더라도 아무도 해킹 할 수 없음을 보장 할 수 없습니다 . OS의 패키지 관리자를 사용하십시오.
Aleksandr Kravets

그 정보는 구식입니다. 공식 문서 또는 자세한 지침을 확인하십시오 .
fabianopinto

28

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

26

tl; dr

라인을 추가하십시오 :

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'

파일로

~/.bash_profile

(jdk1.8.0_144.jdk를 다운로드 한 버전으로 교체하십시오.)

그때 source ~/.bash_profile


22

jenv를 사용하면 Java 환경 관리자와 같습니다. 사용 및 청소가 매우 쉽습니다.

Mac의 경우 다음 단계를 수행하십시오.

brew install jenv

git clone https://github.com/gcuisinier/jenv.git ~/.jenv

설치 : bash를 사용하는 경우 다음 단계를 수행하십시오.

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

$ exec $SHELL -l

jenv에 원하는 버전의 JVM을 추가하십시오.

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

jenv add /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home

설치된 버전을 확인하십시오.

jenv versions

사용하려는 Java 버전을 설정하십시오.

jenv global oracle64-1.6.0

이것은 나를 위해 완벽하게 작동했습니다, 감사합니다!
페르난도 가브리엘

비슷한 도구를 사용하고 있습니다 : sdkman.io/usage- 수동 별칭보다 훨씬 더 나은 접근 방법 IMHO
SathOkh

12
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
}

이것을 ~ / .profile에 넣고 터미널에서 사용하십시오 setjdk 1.8.setjdk 1.7 , setjdk 9등 등 ...

없는 경우 removeFromPath다음과 같습니다.

function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }


12

기본 프로세스를 사용하는 사람들을 위해 터미널을 사용하는 쉬운 4 단계 .. :)

  1. echo $JAVA_HOME현재 자바 홈을 제공합니다. 예를 들어 :/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/ 일반적으로 jdk를 설치하는 폴더로 이동합니다 (컴퓨터에 따라 다를 수 있음)

  3. ls 사용 가능한 폴더를 표시합니다 (일반적으로 버전 번호가 다음과 같습니다). jdk1.8.0_191.jdk openjdk-11.0.2.jdk ).
  4. export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home' 자바 홈을 바꿀 것입니다 ..

8

~/.zshenv파일 에 다음 명령을 추가 하십시오

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

8

macOS El Capitan 이상은 에서 사용할 수있는 더 높은 버전의 JDK를 선택 /Library/Java/JavaVirtualMachines하므로 다운 그레이드하려면 파일 이름 Info.plist을 다른 것으로 변경 Info.plist.disabled하여 OS가 이전 버전을 선택할 수 있습니다.


(가장 쉬운 방법 : 감사합니다
Satheesh 스 리니 바산

6

Apple의 공식 java_home (1) 매뉴얼 페이지에서 :

**USAGE**

   /usr/libexec/java_home  helps  users  set a $JAVA_HOME in their login rc files, or provides a way for
   command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
   tecture  requirement.  The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
   which is useful for starting Java command-line tools from launchd plists without hardcoding the  full
   path to the Java command-line tool.

   Usage for bash-style shells:
          $ export JAVA_HOME=`/usr/libexec/java_home`

   Usage for csh-style shells:
          % setenv JAVA_HOME `/usr/libexec/java_home`

6

먼저 환경 변수를 어디에 저장합니까?

  1. 이맥스
  2. bash_profile
  3. zshrc 파일

환경 변수를 설정하는 단계 :-

  1. 자바에서 jdk를 다운로드
  2. 더블 클릭으로 설치
  3. 이제 파일에 환경 변수를 설정하십시오.

    ㅏ. 들어 emacs.profile 이 사용할 수있는 링크를 또는 아래 스크린 샷 참조

여기에 이미지 설명을 입력하십시오

비. ZSH 프로파일 설정의 경우-

1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

2. source ~/.zshrc - Restart zshrc to reflect the changes.

3. echo $JAVA_HOME - make sure path is set up properly 
   ----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

4. java -version 

   -->  java version "1.8.0_112"  Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

모든 설정 이제 JAVA 버전을 쉽게 업그레이드하거나 저하시킬 수 있습니다.


5

JDK 스위치 스크립트

위의 @Alex의 답변을 수정했으며 Java 9의 코드를 수정하기 위해 다음을 작성했습니다.

$ cat ~/.jdk
#!/bin/bash

#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() {
  echo "Switching java version $1";

  requestedVersion=$1
  oldStyleVersion=8
  # Set the version
  if [ $requestedVersion -gt $oldStyleVersion ]; then
    export JAVA_HOME=$(/usr/libexec/java_home -v $1);
  else
    export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
  fi

  echo "Setting JAVA_HOME=$JAVA_HOME"

  which java
  java -version;
}

Java 8로 전환

$ jdk 8
Switching java version 8
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Java 9로 전환

$ jdk 9
Switching java version 9
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/usr/bin/java
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

5

여전히 u를 설정할 수없는 경우. 이 명령을 사용합니다.

수출 JAVA_HOME =/usr/libexec/java_home -v 1.8

이걸 사용해야합니다

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

반드시 작동합니다.


4

.bash_profile에 추가하여 기본적으로 버전을 설정할 수 있습니다.

//Open bash profile
open ~/.bash_profile

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

// run bash profile
source ~/.bash_profile

감사! 참고로`표시를 포함해야합니다. 분명히 1.8을 필요한 버전으로 바꾸십시오. 제 경우에는 13.0.2
Jamie S

3

물고기를 사용하고 mac을 사용하고 있고 JDK를 전환하고 싶다면 아래 Mac에서 작동합니다.

@ kenglxn의 대답이 저에게 효과가 없었으며 bcos가 전역 -g를 설정하지 않았다는 것을 알았습니다!

~ / .config / fish / config.fish 아래에 넣으십시오

alias j8="jhome  -v 1.8.0_162"
alias j9="jhome  -v 9.0.1"

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

funcsave jhome

설치 한 버전 / 부 버전을 확인하려면 다음을 수행하십시오.

/usr/libexec/java_home -V                                                                              579ms  Wed 14 Feb 11:44:01 2018
Matching Java Virtual Machines (3):
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_162, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
    1.8.0_121, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

2

여러 버전이 있고 특정 버전을 사용하여 무언가를 실행하려면 다음 예제를 사용하십시오.

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar

2

@markhellewell 답변을 바탕으로 나는 당신을 위해 그것을 할 몇 가지 별칭 함수를 만들었습니다. 이것을 쉘 시작 파일에 추가하십시오.

#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() { 
  echo "Switching java version"; 
  export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; 
  java -version; 
}

https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4


2

다음은 Linux (Ubuntu / Mint mate) 에서 수행하는 방법입니다. Mac에서도 비슷하게 할 수 있습니다.


설치 및 구성

단계 :

  • [기본-부분]
  • jdk ( .tgz 파일) 를 직접 다운로드 하십시오 .
  • 적절한 위치에서 압축을 풀고 이름을 바꿉니다.
    예 : /mnt/star/program/java/jdk-1.8
  • 소프트 링크를 작성하십시오. 나중에 Java 버전을 전환하도록 변경됩니다.
    예를 들어 ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    이렇게/mnt/star/program/java/java 소프트 링크입니다.
  • JAVA_HOME시작 스크립트에서 설정하십시오 .
    같은 파일을 사용할 수 /etc/profile.d/eric.sh, 또는 사용 ~/.bashrc.
    예 :JAVA_HOME=/mnt/star/program/java/java
  • 그런 다음 새 bash 쉘을여십시오. java -version자바 버전을 인쇄해야합니다.
  • [더 많은 버전-부분]
  • 필요에 따라 위 단계와 유사하게 더 많은 Java 버전을 다운로드하여 설치하십시오.
    예 :
    /mnt/star/program/java/jdk-11
  • [스위치-부분]
  • 에서 ~/.bashrc다양한 Java 버전에 대한 변수를 정의하십시오.
    예 :
    _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
    _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
    # dir of default version,
    _E_JAVA_HOME_D=$_E_JAVA_HOME_8
  • 에서 ~/.bashrcJava 버전을 전환하는 명령을 정의하십시오.
    예 :
    ## switch java version,
    alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
    alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
    # default java version,
    alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
    alias jv="java -version"
  • 터미널 source ~/.bashrc에서 변경 사항을 적용합니다.
  • 그런 다음 정의 된 명령을 사용하여 전환 할 수 있습니다.

명령-위의 구성

명령 :

  • jv11
    Java 11로 전환
  • jv8
    Java 8로 전환
  • jvd
    _E_JAVA_HOME_D위에 정의 된 기본 Java 버전으로 전환하십시오 .
  • jv
    자바 버전을 보여줍니다.

출력 예 :

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
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)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ 

기구

  • 로 사용되는 소프트 링크를 변경하여 전환합니다 JAVA_HOME.

  • jdk를 수동으로 설치할 때 내 컴퓨터에서 부 버전을 유지 한 다음 부 버전없이 주 버전과 소프트 링크를 만듭니다.
    예 :
    // 이것은 실제 디렉토리입니다.
    jdk1.8.0_191

    // 이것은 소프트 링크입니다 jdk1.8.0_191
    jdk-8

    // 이것은 jdk-8또는jdk-11
    java

  • 에 명령 별칭을 ~/.bashrc정의하지만 별도의 파일에 변수를 정의합니다.
    내가 사용하고 ~/.eric_var변수를 정의하고, ~/.bashrc이를 (예 : 소스 것이다 source $HOME/.eric_var).


1

제공된 목록에 별도로 설치된 JDK를 포함시키는 쉬운 방법 /usr/libexec/java_home -V은 다음과 같이 디렉토리를 심볼릭 링크하는 것입니다.

sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk

예를 들어 Android Studio에 포함 된 JDK를 등록하려면 (작성시 1.8.0_152) 다음을 사용하십시오.

sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk

이제 java_homeJDK가 아래에 나열되고 Matching Java Virtual Machines위에서 설명한대로 선택할 수 있습니다.


1

나는 로컬 터미널을 위해 그것을했다.

export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)

alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'

export JAVA_HOME=$JAVA_13_HOME


-6

너무 쉬운 솔루션 : 정말 두통-이것은 나를 위해 일한 빠르고 쉬운 솔루션이었습니다.

Mac OS Sierra 버전 10.12.13

  1. 바로 가기 키를 사용하십시오. CMD + SHIFT + G- "/ Library /"입력

  2. JAVA 폴더 찾기

  3. Java 폴더를 마우스 오른쪽 단추로 클릭 = 휴지통으로 이동 (암호 필요)

  4. 설치 : Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | 자바 스크립트 SDK 다운로드

  5. 새 라이브러리 폴더가 / LIBRARY /에 있는지 확인하십시오.
  6. 이클립스 설치 | Java 개발자를위한 Eclipse IDE 설치
  7. 붐 완료
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.