OS X에서 Java 7과 8 간 전환 Java-8을 설치했습니다. 이제

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

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

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



답변

손쉬운 버전 전환

  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)
    

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


답변

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

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


답변

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

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

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


답변

@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