Mac OS X 및 여러 Java 버전


333

MacOS에 추가 Java를 설치하려면 어떻게해야합니까? jdk8을 설치했는데 정상적으로 작동합니다. 그러나 이제 개발 목적으로 jdk7 설치가 필요합니다. DMG 파일을 통해 이전 버전을 설치하려고 할 때 이미 최신 버전의 Java가 설치되어 있고 설치 프로그램이 종료된다는 경고가 표시됩니다.

/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
    1.8.0_20, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

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

이 외에도 jdk7을 설치하는 방법은 무엇입니까?

감사합니다
Dakky

답변:


493

Mac에서 여러 Java 버전을 관리하는 가장 깨끗한 방법은을 사용하는 것 Homebrew입니다.

Homebrew에서 다음을 사용하십시오.

  • homebrew-cask 자바 버전을 설치하려면
  • jenv 설치된 Java 버전을 관리합니다.

http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html 에서 볼 수 있듯이 다음 단계를 따르십시오.

  1. 사제 설치
  2. 사제 jenv 설치
  3. 사제 통을 설치하십시오
  4. cask를 사용하여 특정 Java 버전을 설치하십시오 (아래 "homebrew-cask 버전"단락 참조)
  5. jenv에서이 버전을 추가하여 관리하십시오.
  6. jenv가 버전을 올바르게 관리하고 있는지 확인하십시오.
  7. 필요한 각 버전의 Java에 대해 4-6 단계를 반복하십시오.

사제 통 버전

다음을 사용하여 homebrew/cask-versions탭을 homebrew에 추가하십시오 .

brew tap homebrew/cask-versions

그런 다음 사용 가능한 모든 버전을 볼 수 있습니다.

brew search java

그런 다음 원하는 버전을 설치할 수 있습니다.

brew cask install java7
brew cask install java6

그리고 평소와 같이 jenv가 관리하도록 추가하십시오.

jenv add <javaVersionPathHere>

나는 이것이 가장 깨끗하고 간단한 방법이라고 생각합니다.


Mac OS X 10.6.7 Java Path Current JDK 에서 언급했듯이 주목해야 할 또 다른 중요한 사항은 다음과 같습니다.

다른 유형의 JDK 또는 설치의 경우 다른 경로가 있습니다.

당신은 사용하여 설치 한 버전의 경로를 확인할 수 있습니다 /usr/libexec/java_home -V참조 자바 JDK가 맥에 설치되어있는 경우 내가 확인 방법은?

Mac OS X Mavericks에서 다음과 같이 나타났습니다.

1) 내장 JRE 기본값 : /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2) Apple에서 다운로드 한 JDK : /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3) Oracle에서 다운로드 한 JDK : /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


자원


16
homebrew-cask 는 Emacs 플러그인 brew install caskroom/cask/brew-cask대신 command로 설치할 수 있습니다 brew install cask.
Unnawut

7
이 솔루션을 구현하는 동안 몇 가지 문제가 발생했으며 그 중 하나 jenvNo such file or directory.오류 를 반환하는 것 입니다. 이 위키는 나를 해결하는 데 도움이되었습니다. github.com/gcuisinier/jenv/wiki/ 트러블 슈팅
juil

10
나는 모든 자바 설치가있을 것이라고 덧붙이고 추가 /Library/Java/JavaVirtualMachines/할 때 다음과 jenv add같은 경로를 추가한다 /Library/Java/JavaVirtualMachines/[specific-version]/Contents/Home/. 건배!
Nikolay Tsenkov

14
2017 년 6 월 23 일 현재, 나는 brew cask search java7"java7"에 대한 Cask를 찾지 못했습니다.
Mingliang Liu 2016

4
@MingliangLIU 그래 나도 ... 정말 짜증나. Github 에서이 문제에 대한 문제를 발견했지만 몇 가지 해결 방법을 언급했지만 작동하지 못했습니다. 그래서 저는 애플과 오라클의 "자바 버전 다운로드 및 설치"웹 페이지를 통해 "수동으로"해야했습니다. 그런 다음 /usr/libexec/java_home -V경로가 설치된 경로를 다시 확인하십시오.
Adrien 수

304

jdk8을 설치 제거하고 jdk7을 설치 한 다음 jdk8을 다시 설치하십시오.

그들 사이의 전환에 대한 나의 접근법 (. 프로필에서) :

export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)

alias java7='export JAVA_HOME=$JAVA_7_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'

#default java8
export JAVA_HOME=$JAVA_8_HOME

그런 다음 간단히 입력 java7하거나 java8터미널에 버전을 전환 할 수 있습니다 .

(편집 : Java 9에 대한 Dylans 개선 사항을 추가하도록 업데이트 됨)


18
지금까지 이것은 나에게 가장 적합한 옵션입니다. 간단한 명령 "java8"또는 "java7"을 사용하여 모든 버전으로 쉽게 전환 할 수 있습니다. 도움을 주셔서 감사합니다
MMHMasud

4
대단해! :) 그리고 나 같은 다른 사람을 위해 사용할 수 있습니다 : ls / Library / Java / JavaVirtualMachines 사용 가능한 버전을 확인하십시오. 그런 다음 다른 1.8.x 버전을 켤 수 있습니다. 또한 내보내기 PATH = $ JAVA_HOME / bin : $ PATH를 추가해야합니다.
Nico

4
이것에 감사합니다. jdk8 다음에 jdk7을 설치 하여이 작업을 수행했다고 언급하고 싶습니다 (jdk8을 제거 할 필요가 없습니다).
Titus

6
Dunno 왜 jenv와 함께 시간을 낭비 했습니까?
cvakiitho

2
이 방식으로 자바 (9) 작업을 진행하려는 경우, 자바 9 JAVA_HOME에 버전 인수는 단순히해야한다 9export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
딜런 Nissley

125

macOS Sierra 420의 경우

이 안내서는 다양한 출처 (위의 게시물 및 다른 게시물)에서 함께 제공되었으며 완벽하게 작동합니다.

0. 아직 설치하지 않은 경우 homebrew를 설치하십시오.

https://brew.sh/를 참조 하십시오

1. jenv 설치

brew install jenv

2. bash 프로파일에 jenv를 추가하십시오.

if which jenv > /dev/null; then eval "$(jenv init -)"; fi

3. 경로에 jenv 추가

export PATH="$HOME/.jenv/shims:$PATH"

4. "화장실 / 버전"을 누릅니다.

참고 : "Tap"은 brew의 사용 가능한 repos의 기본 목록을 넘어서, brew의 사용 가능한 repos 목록을 확장합니다.

brew tap caskroom/versions

5. 최신 버전의 Java 설치

brew cask install java

6. Java 6 (또는 필요한 경우 7 또는 8)을 설치하십시오.

brew cask install java6
#brew cask install java7
#brew cask install java8

? 어쩌면 터미널을 닫았다가 다시 시작하여 설정 된 새로운 ENV 변수를 볼 수 있습니다.

7. 설치 검토

모든 Java 버전이 여기에 설치됩니다. /Library/Java/JavaVirtualMachines살펴 보겠습니다.

ls -la /Library/Java/JavaVirtualMachines

8. 한번에 jenv에 각 경로를 추가하십시오.

버전 폴더에 "/ Contents / Home"을 추가해야합니다. 경고 : 실제 경로는 컴퓨터에 ... 이건 그냥있는 '들

jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home

9. jenv 등록 확인

jenv versions

10. 자바 버전을 사용하도록 설정 (글로벌)

여기서 XX는 위의 버전 목록에있는 항목 중 하나와 일치합니다.

jenv global XX

자바 버전 확인

java -version

jenv 버전 확인

또한 별표와 함께 사용중인 현재 버전을 나타내야합니다.

jenv versions

끝난


빠른 미래 참조

Java 버전을 변경하려면

... 사용 가능한 Java 버전 목록을 참조하십시오.

jenv versions

... 그런 다음 XX는 위 목록의 항목과 일치합니다.

jenv global XX

1
또한, 터미널 후 다시 시작brew cask install java*
squeeish

1
단계별로 명확하고 훌륭한 설명.
Ritesh Singh

1
오류 : Cask 'java8'을 사용할 수 없습니다.이 이름의 Cask가 없습니다.
Alexey Sh.

6
java8 / 9 / 10은 더 이상 casks로 사용할 수 없습니다. 대신보십시오 : "adoptopenjdk / 오픈 JDK / adoptopenjdk8 양조 통을 설치"
supi

1
brew tap caskroom/versions해야brew tap homebrew/cask-versions
뱌체슬라프 Cotruta에게

42

SDKMAN! Mac OS에서 여러 버전의 Java, Gradle, Groovy, Kotlin 및 기타 JVM 도구를 사용하기위한 훌륭한 도구입니다. 설치 및 사용 설명서는 기본 사이트에 있습니다.

(나는 제휴가 없으며 행복한 사용자 일뿐입니다).

예를 들어, 터미널 창에 다음을 입력하면 사용 가능한 Java SDK 버전 목록이 있습니다 (간결하게 편집).

$ sdk list java
Available Java Versions
   + 9ea170                                                                        
 > + 8u131                                                                         
     7u141-zulu                     

여기 +에 버전이 설치되었음을 나타냅니다. >현재 사용중인 버전을 나타냅니다. 버전을 설치하려면

$ sdk install java 7u141-zulu

이 터미널 창에서 버전을 사용하려면

$ sdk use java 9ea170

sdkman은 java 1.7로 시작하는 버전을 지원합니다. java 1.6을 사용하려는 경우이 솔루션이 적합하지 않을 수 있습니다.
Aykut Akıncı

sdkman은 훌륭하지만 버전 내 특정 릴리스를 지원하지 않습니다. 예를 들어 Datastax Dev Center는 1.8.0_151에서만 작동하지만 sdkman으로는 지정할 수 없습니다. 바라건대 그들은 더 많은 버전을 추가합니다.
Eduardo Dennis

로컬 버전이 있다면 SDKMan에 설치할 수 있다고 생각합니다 -sdkman.io/usage#localversion (하지만 시도하지는 않았습니다)
Michael Easter

6

웹 사이트 에 나와있는 것처럼 jEnv를 설치하여 시작하겠습니다.

  1. 터미널에서 이것을 실행하십시오.

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
  2. bash 프로파일에 jEnv 추가

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
  3. jEnv를 처음 설치할 때 관련된 JDK가 없습니다.

    예를 들어, 방금 JDK 8을 설치했지만 jEnv는 이에 대해 알지 못합니다. jEnv에서 Java 버전을 확인하려면

    현재 시스템에서 Java 버전 (jre) 만 발견했습니다. *쇼 버전은 현재 선택. rvm 및 rbenv와 달리 jEnv는 JDK를 설치할 수 없습니다. Oracle 웹 사이트에서 JDK를 수동으로 설치해야합니다.

  4. Apple 웹 사이트에서 JDK 6을 설치하십시오. 에 Java가 설치됩니다 /System/Library/Java/JavaVirtualMachines/. Apple 웹 사이트에서 Java 6을 설치하는 이유는 SUN이 MAC 용 JDK 6을 제공하지 않았기 때문에 Apple이 자체 배포 버전을 작성 / 수정했기 때문입니다.

  5. 마찬가지로 JDK7 및 JDK8을 설치하십시오.

  6. jEnv에 JDK를 추가하십시오.

    JDK 6 :

    JDK 7 : http : //javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518ab9bc47d4.png

    JDK 8 : http : //javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abb2c1217.png

  7. jenv를 사용하여 설치된 Java 버전 확인

    http : //javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png

  8. 이제 시스템에 3 가지 버전의 Java가 있습니다. 기본 버전을 설정하려면 다음 명령을 사용하십시오

    jenv local <jenv version>

    Ex – Jdk 1.6이 IntelliJ를 시작하기를 원했습니다

    jenv local oracle64-1.6.0.65
  9. 자바 버전을 확인하십시오

    자바-버전 http : //javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png

그게 다야. 이제 여러 버전의 Java가 있으며 쉽게 전환 할 수 있습니다. jEnv에는 Gradle, Ant, Maven 등의 래퍼 및 JVM 옵션을 전역 또는 로컬로 설정하는 기능과 같은 다른 기능도 있습니다. 자세한 내용은 설명서를 확인하십시오.


5
명령 이미지를 넣지 마십시오. 복사 / 붙여 넣기가 어렵습니다. 명령을 강조 표시하려면 한 단어 나 짧은 명령에 백틱 "`"을 사용하거나 명령 줄에 공백 4 개 (또는 목록에서 4의 배수)로 명령을 들여 쓰십시오.
Seki

1
감사합니다 세키. 이미지를 게시하는 데 어려움을 겪고 포맷을 시도하는 데 오랜 시간이 걸렸지 만 제대로 얻을 수 없었습니다. 백틱 정보를 공유해 주셔서 감사합니다.
Dinesh Arora

4
같은 이미지를 네 번 사용한 것 같습니다.
Ellen Spertus

5

최근에 Jabba 라는 Java 버전 관리자를 발견 했으며 사용법은 rvm (ruby), nvm (node), pyenv (python) 등과 같은 다른 언어의 버전 관리자와 매우 유사합니다. 또한 크로스 플랫폼이므로 확실히 사용할 수 있습니다. 맥.

설치 후 ~ / .jabba에 디렉토리를 작성하여 설치 한 모든 Java 버전을 넣습니다. "Oracle JDK (기본값) / Server JRE, Zulu OpenJDK (0.3.0 이후), IBM SDK, Java Technology Edition (0.6.0 이후) 및 사용자 정의 URL 설치를 지원합니다."

기본 사용법은 Github에 나와 있습니다. 빠른 요약 시작 :

curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh

# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically  
jabba install 1.7 # "jabba use 1.7" will be called automatically 

# list all installed JDK's
jabba ls

# switch to a different version of JDK
jabba use 1.8

4

Mac OS X 10.9.5를 사용하고 있습니다. 응용 프로그램 A를 실행하고 응용 프로그램 B에 다른 버전을 사용하기 위해 한 버전이 필요할 때 내 컴퓨터에서 여러 JDK / JRE를 관리하는 방법입니다.

온라인에서 도움을 얻은 후 다음 스크립트를 작성했습니다.

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

위의 스크립트를 .profile 파일에 넣었습니다. 터미널을 열고 vi .profile을 입력하고 위의 스 니펫이있는 스크립트를 추가 한 후 저장하십시오. 출력 유형을 입력 source .profile하면 터미널을 다시 시작하지 않고도 프로필 스크립트가 실행됩니다. 이제 java -version1.7을 현재 버전으로 표시해야합니다. 1.8로 변경하려면 해당 줄 setjdk jdk1.7.0_15.jdk을 주석 처리하고 주석 처리를 제거하십시오 setjdk jdk1.8.0_60.jdk. 스크립트를 저장하고 source 명령으로 다시 실행하십시오. 이 메커니즘을 사용하여 다른 Java 버전이 필요한 2 개의 다른 Maven 프로젝트를 컴파일해야 할 때 여러 버전의 JDK / JRE를 관리합니다.


3

Mac Sierra의 Jenv :

설치 후 작동하지 않으면이 버그 수정을 수행하여 Java 실행 파일을 경로에 추가하십시오.

export PATH="$HOME/.jenv/shims:$PATH"

eval "$(jenv init -)"이 일을 할 수 있지만 . 그 이유는 홈페이지에 설명 된대로 / bin 폴더가 더 이상 존재하지 않지만 대신 shim 폴더가 / bin으로 사용되기 때문입니다.

  • ~ / .jenv가 있는지 확인하십시오
  • which java / Library / ...를 인쇄 할 수 있습니다
  • jenv 글로벌 1.8
  • jenv 쉘 1.8

결국 다음을 which java제공합니다.

/Users/xxxx/.jenv/shims/java


3

@Vegard (경량)와 같은 정신으로 :

  • Homebrew와 함께 원하는 JDK 설치
  • jdkbash 함수와 기본값을.profile

    jdk() {
        version=$1
        export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
        java -version
     }
    
    export JAVA_HOME=$(/usr/libexec/java_home -v11); # Your default version
  • 그런 다음 jdk를 전환하려면 다음을 수행하십시오.

     jdk 9
     jdk 11
     jdk 13

https://github.com/AdoptOpenJDK/homebrew-openjdk 기반 .


0

bash에 대한 DRY 버전이 더 있습니다 (Vagard의 답변을 기반으로 함)

1.7과 1.8을 원하는 버전으로 바꾸면 'javaX'라는 별칭이 나타납니다. 여기서 'X'는 버전을 쉽게 전환 할 수있는 Java 버전 (아래 스 니펫의 7/8)입니다.

for version in 1.7 1.8; do
    v="${version: -1}"
    h=JAVA_"$v"_HOME

    export "$h"=$(/usr/libexec/java_home -v $version)

    alias "java$v"="export JAVA_HOME=\$$h"
done

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