Alternando entre Java 7 e 8 no OS X

25

Eu instalei o Java-8. Agora eu queria voltar para o Java-7 por padrão, então eu digito ...

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

Mas ainda vejo ...

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)

Isso funciona ...

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

Mas gostaria de uma solução mais permanente.

Alguém vê o que estou fazendo errado?

    
por Jackie 25.09.2013 / 22:13

4 respostas

50

Alterne facilmente as versões

  1. Instale as versões 1.6, 1.7, 1.8 em qualquer ordem. Nota: Eu acredito que o último instalado determina qual deles será usado para os plugins do navegador, eu não vou me importar em mudar os que estão abaixo.

  2. Em seguida, adicione ao seu ~/.bashrc ou ~/.bash_profile ou sempre:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. Verifique a alteração via 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)
    

Obviamente, a mudança é apenas para a duração do shell. Mas você pode ver onde você pode defini-lo globalmente agora.

    
por 19.03.2014 / 21:43
9

Você pode usar o jEnv ( link ), que é "uma ferramenta de linha de comando para ajudá-lo a esquecer como definir a variável de ambiente JAVA_HOME para alternar entre diferentes versões do JDK "(retiradas da página inicial do projeto).

Se você estiver familiarizado com o Ruby, o JEnv é como usar o RVM ou o rbenv. Ele ajuda você a lidar com vários JDKs diferentes instalados em sua máquina sem ter que escrever seu próprio script para alternar de um JDK para outro. Você pode alterar a versão atual do java com base, por exemplo, no diretório atual ou com base em um arquivo de configuração.

    
por 02.05.2014 / 12:11
4

Você não pode alternar entre as versões Java. Na Documentação , você vê:

Only one JRE can be installed at a time. The system will not install a JRE that has a lower version than the current version. If you wish to install a lower version of the JRE, first uninstall the current version.

Se você quiser voltar para uma versão mais antiga, terá que desinstalar Java 8.

    
por 25.09.2013 / 22:42
0

Eu quero complementar a resposta do @ nkadwa. Sua sugestão funcionou, mas somente depois de mudar o symlink para CurrentSDK. Então aqui está o código modificado:

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
    
por 18.06.2015 / 12:16