Como definir ou alterar a versão Java (JDK) padrão no OS X?

Como você pode mudar a versão padrão do Java em um mac?

   

Primeiro execute /usr/libexec/java_home -V que produzirá algo como o seguinte:

 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 

Escolha a versão que você quer que seja o padrão ( 1.6.0_65-b14-462 para argumentos sake) e então:

 export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462` 

ou você pode especificar apenas a versão principal, como:

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

Agora, quando você executar o java -version você verá:

 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) 

Basta adicionar a linha de export JAVA_HOME… ao arquivo init do seu shell.

Esta resposta é uma tentativa de resolver: como controlar a versão java em todo o sistema (não apenas no shell atualmente em execução) quando várias versões do JDK são instaladas para fins de desenvolvimento no macOS El Capitan & Sierra . Tanto quanto eu posso dizer, nenhuma das respostas atuais faz isso (*).

Como desenvolvedor, eu uso vários JDKs e quero mudar de um para outro facilmente. Normalmente eu tenho o último mais estável (Java 8 agora) para uso geral e outros para testes (por exemplo, um antigo JDK7 e um “access antecipado” JDK9, por exemplo). Mas eu não quero que o sistema use o Java 9 (por exemplo, quando eu iniciar meu IDE) por enquanto. O padrão deve ser o último estável.

Minha solução atual:

  • deixe todos os JDKs em sua localização padrão, em /Library/Java/JavaVirtualMachines . O sistema escolherá a versão mais alta por padrão.
  • Para excluir um JDK de ser escolhido por padrão, renomeie seu Contents/Info.plist para Info.plist.disabled . Esse JDK ainda pode ser usado quando $JAVA_HOME apontar para ele ou explicitamente referenciado em um script ou configuração. Ele simplesmente será ignorado pelo comando java do sistema.

O ativador do sistema usará o JDK com a versão mais alta entre aqueles que possuem um arquivo Info.plist .

Ao trabalhar em um shell com JDK alternativo, escolha seu método entre as respostas existentes ( jenv ou aliases / scripts personalizados em torno de /usr/libexec/java_home , etc).


Detalhes de investigação nesta essência .


(*) As respostas atuais são obsoletas (não são mais válidas para macOS El Capitan ou Sierra), ou apenas endereçam um único JDK ou não abordam o aspecto de todo o sistema. Muitos explicam como alterar $JAVA_HOME , mas isso afeta apenas o shell atual e o que é lançado a partir dele. Ele não afetará um aplicativo iniciado a partir do iniciador do SO (a menos que você altere o arquivo correto e efetue logout / login, o que é tedioso). O mesmo para o jenv, é legal e tudo mais, mas até onde eu posso dizer, ele simplesmente altera as variables ​​de ambiente, então ele tem a mesma limitação.

Adicionando as respostas acima, eu coloquei as seguintes linhas no meu .bash_profile que torna muito conveniente a troca (incluindo o comentário do @elektromin para o java 9):

 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" 

Após inserir, execute $ source .bash_profile

Eu posso mudar para o Java 8, digitando o seguinte:

 $ 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) 

Uma pequena function de peixe baseada em / 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 

Se você não usa peixe, você pode fazer algo similar no bash:

 #!/bin/bash jhome () { export JAVA_HOME=`/usr/libexec/java_home $@` echo "JAVA_HOME:" $JAVA_HOME echo "java -version:" java -version } 

Então, para alternar entre o javas do:

 $> jhome #switches to latest java $> jhome -v 1.7 #switches to java 1.7 $> jhome -v 1.6 #switches to java 1.6 

ref: https://gist.github.com/kenglxn/1843d552dff4d4233271

Use jenv é um caminho fácil.

1.Instalar jenv

  curl -s get.jenv.io |  festança 

2.Config jenv

     cd ~ / .jenv / candidates /
     mkdir java
     cd java
     mkdir 1.7
     mkdir 1.8

3.Simile o caminho do 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.Você está tudo pronto

comando de comutação:

jenv usa o java 1.8

conjunto padrão:

jenv default java 1.7

É um pouco complicado, mas tente seguir as etapas descritas em Instalando o Java no OS X 10.9 (Mavericks) . Basicamente, você terá que atualizar seu alias para java .

Passo a passo:

Depois de instalar o JDK 1.7, você precisará fazer o sudo ln -snf para alterar o link para o java atual. Para fazer isso, abra o Terminal e envie o comando:

 sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK 

Note que o diretório jdk1.7.0_51.jdk pode mudar dependendo da versão do SDK que você instalou.

Agora, você precisa definir JAVA_HOME para apontar para onde o jdk_1.7.0_xx.jdk foi instalado. Abra novamente o Terminal e digite:

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

Você pode adicionar a linha de export JAVA_HOME acima em seu arquivo .bashrc para ter java permanentemente no seu Terminal

instalar o JDK, não apenas o JRE

 /usr/libexec/java_home -v 1.8 

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

Próximo

 touch .bash_profile open -a TextEdit.app .bash_profile 

TextEdit mostrará uma página em branco que você pode preencher.

adicionar ao documento: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

no terminal:

 export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)" 

tente o comando:

javac -version

deve sair:

 javac 1.8.0_111 
 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 } 

coloque isso em seu ~ / .profile e use-o em seu terminal como setjdk 1.8 , setjdk 1.7 , setjdk 9 etc etc …

Se você não tiver removeFromPath então é:

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

Adicione a linha:

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

para o arquivo

~/.bash_profile

substitua por sua versão baixada.

Na página man do oficial java_home (1) da Apple:

 **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` 

Use jenv, é como um gerenciador de ambiente Java. É super fácil de usar e limpar

Para Mac, siga os passos:

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

Instalação: Se você estiver usando o bash, siga estas etapas:

 $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(jenv init -)"' >> ~/.bash_profile $ exec $SHELL -l 

Adicione as versões desejadas da JVM ao jenv:

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

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

Verifique as versões instaladas:

 jenv versions 

Defina a versão do Java que você deseja usar:

 jenv global oracle64-1.6.0 

Script de Comutador JDK

Eu adaptei a resposta do @Alex acima e escrevi o seguinte para corrigir o código do Java 9.

 $ cat ~/.jdk #!/bin/bash #list available jdks alias jdks="/usr/libexec/java_home -V" # jdk version switching - eg `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; } 

Mudar para o 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) 

Mude para o 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) 

Se você estiver usando fish e estiver usando o mac e quiser alternar entre os JDKs, então abaixo funciona para mim no mac.

A resposta do @kenglxn não funcionou para mim e eu percebi que o bcos não definia -g que é global!

Coloque abaixo em ~ / .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 

Para saber qual versão / versão secundária você instalou, você pode fazer:

 /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 

Com base na resposta @markhellewell, criei algumas funções de alias que farão isso por você. Basta adicioná-los ao seu arquivo de boot do shell

 #list available jdks alias jdks="/usr/libexec/java_home -V" # jdk version switching - eg `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

Esta ferramenta fará o trabalho para você:

http://www.guigarage.com/2013/02/change-java-version-on-mac-os/

É um JavaOne simples que pode ser usado para definir a versão atual do Java. A versão pode ser usada em um shell que é aberto depois que uma versão foi selecionada na ferramenta.

Se você tiver várias versões e quiser executar algo usando uma versão específica, use este exemplo:

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

SOLUÇÃO MUITO FÁCIL: Que dor de cabeça – essa foi uma solução fácil e rápida que funcionou para mim.

Mac OS Sierra versão 10.12.13

  1. Use as teclas de atalho: CMD + SHIFT + G – digite “/ Library /”

  2. Encontre a pasta JAVA

  3. Clique com o botão direito na pasta Java = Move to Trash (Password Required)

  4. Instalar: Kit de Desenvolvimento do Java SE 8 jdk-8u131-macosx-x64.dmg | Baixe o Javascript SDK

  5. Verifique se a nova pasta JAVA aparece em / LIBRARY /
  6. Instalar o Eclipse | Instale o Eclipse IDE para desenvolvedores Java
  7. Boom Feito