OS X에서 Java 7과 8 간 전환


25

Java-8을 설치했습니다. 이제 기본적으로 Java-7로 돌아가고 싶었습니다.

/usr/libexec/java_home -v 1.7.0_40 --exec java -version
/usr/libexec/java_home -v 1.7.0_40 --exec javac -version

하지만 여전히 봅니다 ...

java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

이것은 작동합니다 ...

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

그러나 나는 더 영구적 인 해결책을 원합니다.

내가 뭘 잘못하고 있는지 알아?

답변:


50

손쉬운 버전 전환

  1. 버전 1.6, 1.7, 1.8을 순서에 상관없이 설치하십시오. 참고 : 마지막으로 설치된 것이 브라우저 플러그인에 사용될 플러그인을 결정한다고 생각합니다. 아래 플러그인을 변경하는 것에 대해서는 신경 쓰지 않을 것입니다.

  2. 그런 다음 ~/.bashrc또는에 추가하십시오 ~/.bash_profile.

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. 통해 변경 사항을 확인 java -version

    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ 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)
    
    $ setjdk 1.8
    $ java -version
    java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

분명히 변화는 껍질의 지속 기간 동안입니다. 그러나 이제 전세계 어디에서 설정할 수 있는지 알 수 있습니다.


2
한 가지 문제점 : JDK8이 이미 있으면 JDK7이 설치를 거부합니다. 404를 제공하는 자세한 정보는 oracle.com의 URL을 가리 킵니다. 물론 JDK8 의 제거 지침 이 전혀 작동하지 않으므로 기본적으로 손실됩니다.
Eric W


9

jEnv ( http://www.jenv.be/ )를 사용할 수 있습니다. "JAK의 다른 버전간에 전환하도록 JAVA_HOME 환경 변수를 설정하는 방법을 잊어 버리는 명령 줄 도구"(프로젝트 홈페이지에서 가져옴) ).

Ruby에 익숙하다면 JEnv는 RVM 또는 rbenv를 사용하는 것과 같습니다. JDK에서 다른 JDK로 전환하기 위해 자체 스크립트를 작성할 필요없이 시스템에 설치된 여러 가지 JDK를 처리하는 데 도움이됩니다. 현재 디렉토리 또는 구성 파일을 기반으로 현재 Java 버전을 변경할 수 있습니다.


이것을 확장 할 수 있습니까? 이것은 답변이 아닌 설명처럼 보입니다.
오스틴 T 프랑스어

Ruby에 익숙한 경우 RVM 또는 rbenv를 사용하여 현재 Java 버전을 변경하거나 구성 파일을 기반으로 현재 Java 버전을 변경하는 것과 같습니다. JENV 홈페이지로 가면 좋은 튜토리얼이 있습니다.
Pietro Di Bello

이 게시물은 답변을 찾는 모든 사람을위한 것이므로 게시물의 자세한 내용은 완전하고 좋은 답변으로 간주됩니다.
오스틴 T 프랑스어

더 많은 정보를 추가하고 답변을 조금 확장했습니다 ... 이것이 지금 더 좋아지기를 바랍니다. 피드백 감사드립니다.
Pietro Di Bello

4

Java 버전간에 전환 할 수 없습니다. 설명서 에는 다음 이 표시됩니다.

한 번에 하나의 JRE 만 설치할 수 있습니다. 시스템은 현재 버전보다 낮은 버전의 JRE를 설치하지 않습니다. 낮은 버전의 JRE를 설치하려면 먼저 현재 버전을 설치 제거하십시오.

이전 버전으로 돌아가려면 Java 8 을 설치 제거 해야합니다 .


grrr 감사하지만 OSX에 대한 나의 의견에는 도움이되지 않습니다.
Jackie

4
@Jackie : 사실 이것은 OS X와는 관련이 없지만 Oracle과는 더 관련이 있습니다. Apple이 OS X 용 JDK를 유지 관리했을 때 활성 Java 버전 간을 완벽하고 쉽게 전환 할 수있었습니다. 자신의 엉터리 설치가 아닌 OS X 용 오라클을 비난하십시오
알레산드로 베르 메울 렌

@AlessandroVermeulen은 모든 것을 존중하지만 "설치자"가 아닙니다. 리눅스 박스와 같은 버전이 미리 설치되어 있지 않기를 바랍니다. 그런 다음 어쨌든 유닉스 바이너리로 원하는 것을 "설치"할 수있었습니다. 그리고 이전 버전의 OSX도 부팅해야했습니다. IMHO 문제를 일으키는 것은 OSX에서 사용되는 규칙입니다.
Jackie

4
내 컴퓨터에 여러 개의 JDK가 올바르게 설치되어 있습니다. Oracle의 환경 설정 플러그인은 1.8에서 1.7 로의 전환을 허용하지 않는 명령 줄에서 모든 경로가 성공적으로 작동하는 Oracle의 환경 설정 플러그인입니다. 는 / usr / libexec 디렉토리 / JAVA_HOME -V 목록 그들에게 모든 - 그리고 자바 7 환경 설정 창은 자바 7의 JRE의 검색 허용
user151019

0

@nkadwa의 답변을 보완하고 싶습니다. 그의 제안은 효과가 있었지만 CurrentSDK의 심볼릭 링크를 변경 한 후에 만 ​​가능했습니다. 수정 된 코드는 다음과 같습니다.

setjdk() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    sudo ln -nsf ${JAVA_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.