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

781

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

Venkat
fonte
2
o que a execução /usr/libexec/java_homelhe diz?
Bart
2
/ usr / libexec / java_home retorna /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Venkat
Pode ser que você só precise reiniciar. Você já tentou isso?
Bart
Sim reiniciou o computador e o terminal ... nenhuma alteração.
Venkat 23/02
3
Você poderia aceitar a resposta altamente votada de @markhellewell abaixo? Teria me ajudado a encontrá-lo um pouco mais rápido, e é legal. :)
Taytay

Respostas:

1410

Primeira execução, /usr/libexec/java_home -Vque 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ê deseja que seja o padrão ( 1.6.0_65-b14-462por razões de argumentos) e depois:

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, java -versionvocê 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)

Adicione a export JAVA_HOME…linha ao arquivo init do seu shell.

Para o Bash (conforme declarado por antonyh ):

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

Para peixes (como declarado por ormurin)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)
markhellewell
fonte
2
@ MattO'Brien é algo que depende do shell você está usando, e a configuração que você tem no lugar, por isso não posso dar uma solução completa para que ...
markhellewell
11
aqueles realmente são backticks a exportlinha
David West
6
Isto não funcionou para mim. Pegue o caminho da execução de java_home -V e adicione-o ao comando de exportação, como este export JAVA_HOME = "/ Sistema / Biblioteca / Java / Java / JavaVirtualMachines / 1.6.0.jdk / Conteúdo / Home"
oden
68
Isso funciona no Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- observe também, java_home permite correspondências parciais para que você não precise incluir a versão completa, pois ela encontrará as últimas instaladas. Isso facilita as atualizações.
antonyh
15
Certifique-se de estar usando `` não '' para exportar.
nevasca
410

Esta resposta é uma tentativa de abordar: 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 ou mais recente (Sierra, High Sierra, Mojave) . Até onde eu sei, nenhuma das respostas atuais faz isso (*).

Como desenvolvedor, uso vários JDKs e quero alternar de um para outro facilmente. Normalmente, tenho o último estável para uso geral e outros para testes. Mas não quero que o sistema (por exemplo, quando inicio meu IDE) use a versão mais recente de "acesso antecipado" que tenho por enquanto. Eu quero controlar o padrão do sistema, e isso deve ser o mais recente estável.

A abordagem a seguir funciona com Java 7 a 12 pelo menos (acesso antecipado no momento da redação deste documento), com Oracle JDK ou OpenJDK (incluindo compilações do AdoptOpenJDK produzidas após meados de outubro de 2018 ).

Solução sem ferramentas de terceiros:

  • deixe todos os JDKs no local 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-o Contents/Info.plistparaInfo.plist.disabled . Esse JDK ainda pode ser usado quando $JAVA_HOMEaponta para ele, ou explicitamente referenciado em um script ou configuração. Ele será simplesmente ignorado pelosjava comando .

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

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


Detalhes da investigação nesta essência .


(*) As respostas atuais são obsoletas (não são mais válidas para o macOS El Capitan ou Sierra) ou tratam apenas de um único JDK ou não tratam do aspecto de todo o sistema. Muitos explicam como mudar $JAVA_HOME, mas isso afeta apenas o shell atual e o que é iniciado a partir daí. Não afetará um aplicativo iniciado no iniciador do sistema operacional (a menos que você altere o arquivo correto e faça logout / login, o que é entediante). O mesmo para jenv, é legal e tudo, mas, tanto quanto posso dizer, apenas altera as variáveis ​​de ambiente, por isso tem a mesma limitação.

Hugues M.
fonte
16
Esta é a resposta que eu estava procurando, pois jenvnem JAVA_HOMEé capaz de definir a versão java em todo o sistema, ou seja, a que o Eclipse usaria.
Giovanni Lovato
3
@Rodrigo Sim, conforme mencionado em "Detalhes da investigação" (link acima): "A instalação de um JDK também substitui /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Aparentemente, é esse o novo painel de Preferências que será iniciado - esta é a única exceção que encontrei na minha solução: essa O thingy ainda usará o JDK9 (o mais recente que eu instalei), mas nenhum outro aplicativo Java usa. "
Hugues M.
2
É importante notar que as versões java são encontradas em / Library / Java / JavaVirtualMachines e que a excelente solução de trabalho acima está dentro desse contexto.
Andrew Kostka
3
Exatamente, esta é a melhor e a solução mais funcional para esta pergunta. Infelizmente sim.
Aerodynamika
3
Não posso agradecer o suficiente por esta resposta. Isso corrigiu os aplicativos de inicialização do iniciador do SO.
Karthic Raghupathi
248

Adicionando as respostas acima, coloquei as seguintes linhas no meu .bash_profile(ou .zshrcno MacOS 10.15+), o que torna muito conveniente alternar (incluindo o comentário de @ 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 a inserção, 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)
Justin Zhang
fonte
5
Esta é a sintaxe do Java 9: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin
3
Alias ​​simples e impressionantes para troca rápida.
Gbonetti 11/11
Usando alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"e, em seguida, digitação j10permite que você alterne de volta para a versão atual do Java (no meu caso Java 10)
intagli
Eu faria uma ferramenta cli semelhante ao nvmde comutação versões do Java, mas a sigla jvmjá significa algo mais :)
Andy
Eu recebo este erro ao fazer o sourcing: /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11
56

Uma pequena função fish 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, pode fazer algo semelhante no bash:

#!/bin/bash

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

Para alternar entre javas, faça:

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

kenglxn
fonte
1
isso muda apenas para a sessão específica do terminal. Existe uma maneira de atualizar isso para alterá-lo em todo o sistema?
ENG618 23/03
1
Eu tive que escrever em export JAVA_HOME=(/usr/libexec/java_home $argv)vez da segunda linha da sua jhomefunção.
Daniel AA Pelsmaeker
32

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

Passo a passo:

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

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

Observe que o diretório jdk1.7.0_51.jdkpode mudar dependendo da versão do SDK que você instalou.

Agora, você precisa definir JAVA_HOMEpara apontar para onde jdk_1.7.0_xx.jdkfoi instalado. Abra novamente o terminal e digite:

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

Você pode adicionar a export JAVA_HOMElinha acima no seu .bashrcarquivo para ter o java permanentemente no seu Terminal

Trein
fonte
1
como faço para definir a variável JAVA_HOME? existe um lugar específico em que eu o coloquei?
Venkat 23/02
onde estou exportando JAVA_HOME? e onde isso será salvo?
Venkat 23/02
1
Eu atualizei a resposta. Você conhece a versão do SDK que você instalou? O nome da pasta leva o número da versão do SDK, portanto, os comandos acima podem mudar um pouco.
Trein 23/02
Eu instalei o mais recente, eu acho que é 51.
Venkat
A variável JAVA_HOMEserá exportada na sessão atual do Terminal. Você pode adicioná-lo ao nosso, .bashrcse quiser. Vou adaptar os comandos para a última versão.
Trein 23/02
32

Usar jenv é uma maneira fácil.

1.Instale o jenv

    enrolar -s get.jenv.io | bater

2.Config jenv

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

3.Ligue o caminho do jdk

    ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~ / .jenv / candidatos / java / 1.7
    ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / candidatos / java / 1.8

4.Você está pronto

comando switch:

jenv use java 1.8

conjunto padrão:

jenv java padrão 1.7

Yuantao
fonte
Solução limpa e agradável.
pinturic
Em vez de "jenv use java 1.8", eu tive que usar "jenv shell 1.8". "shell" também pode ser "global" ou "local", dependendo da necessidade.
9789 Steve #
1
Jenv é legal quando funciona. Recomendaria contra isso, já que "realmente" não altera a versão java padrão usada, evidente executando o comando "/ usr / libexec / java_home -V", apenas o JAVA_HOME. Isso causa problemas estranhos em alguns aplicativos, por exemplo, Eclipse.
21618 Simon
Além disso, essa parte paranóica de mim sugere não enrolar nada para bater. Mesmo se você acha que o site é confiável, ninguém pode garantir que ele é intransferível. Use o gerenciador de pacotes do seu sistema operacional.
Aleksandr Kravets
Essa informação está desatualizada. Verifique a documentação oficial ou instruções mais detalhadas .
Fabianopinto
28

instale 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

O 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 produzir:

javac 1.8.0_111
user2708060
fonte
26

tl; dr

Adicione a linha:

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

para o arquivo

~/.bash_profile

(substitua jdk1.8.0_144.jdk pela sua versão baixada)

então source ~/.bash_profile

dustinevan
fonte
22

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

Para Mac, siga as etapas:

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 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
slal
fonte
Isso funcionou perfeito para mim, obrigado!
Fernando Gabrieli
Eu estou usando uma ferramenta semelhante: sdkman.io/usage - IMHO abordagem muito melhor do que aliases manuais etc
SathOkh
12
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
}

colocar isso no seu ~ / .profile e usá-lo em seu terminal como assim setjdk 1.8, setjdk 1.7,setjdk 9 etc etc ...

Se você não possui removeFromPath, é:

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

Gabriel Reiser
fonte
12

Quatro etapas fáceis usando o terminal para pessoas que usam o processo padrão .. :)

  1. echo $JAVA_HOMEdá-lhe atual java home. Por exemplo:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/ levará você para a pasta em que você normalmente instala o jdks (pode ser diferente para suas máquinas)

  3. ls mostra as pastas disponíveis (normalmente ele terá os números da versão, por exemplo: jdk1.8.0_191.jdk openjdk-11.0.2.jdk :)
  4. export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home' vai mudar a casa do java ..
Abbin Varghese
fonte
8

adicione o seguinte comando ao ~/.zshenvarquivo

export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 
xsilen T
fonte
8

O macOS El Capitan ou mais recente escolherá a versão mais alta do JDK disponível no site /Library/Java/JavaVirtualMachines. Portanto, para fazer o downgrade, você pode renomear o arquivo Info.plistpara outra coisa, Info.plist.disabledpara que o sistema operacional escolha uma versão anterior.

Joaquín L. Robles
fonte
Maneira mais fácil de (: Obrigado
Satheesh Srinivasan
6

Na página do manual 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`
Antonio
fonte
6

Se você ainda não conseguir defini-lo. usando este comando.

exportar JAVA_HOME =/usr/libexec/java_home -v 1.8

então você tem que usar este.

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

certamente funcionará.

RohitKumar
fonte
6

Primeiro descubra onde você armazena as variáveis ​​de ambiente -

  1. emacs
  2. bash_profile
  3. arquivo zshrc

Etapas para configurar a variável de ambiente: -

  1. Faça o download do jdk do JAVA
  2. instale-o com um clique duplo
  3. Agora configure variáveis ​​de ambiente no seu arquivo

    uma. Para emacs.profile, você pode usar este link OU ver a captura de tela abaixo

insira a descrição da imagem aqui

b. Para configuração do perfil ZSH -

1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

2. source ~/.zshrc - Restart zshrc to reflect the changes.

3. echo $JAVA_HOME - make sure path is set up properly 
   ----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

4. java -version 

   -->  java version "1.8.0_112"  Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

Tudo pronto Agora você pode atualizar ou degradar facilmente a versão JAVA.

Vrushali Raut
fonte
5

Script do switch JDK

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 - e.g. `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 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)

Mudar para 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)
Marcello de Sales
fonte
4

Você pode adicioná-lo ao seu .bash_profile para que a versão seja definida por padrão.

//Open bash profile
open ~/.bash_profile

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

// run bash profile
source ~/.bash_profile
Amin Agha
fonte
Obrigado! Nota: você deve incluir as marcas `. e, obviamente, substitua 1.8 por qualquer versão que você possa precisar. No meu caso 13.0.2
Jamie S
3

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

A resposta do @ kenglxn não funcionou para mim e eu descobri que o bcos não definiu -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:

/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
Gob00st
fonte
2

Se você possui várias versões e deseja 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
MonstroDev
fonte
2

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

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

Alex
fonte
2

Aqui está como eu faço no meu Linux (Ubuntu / Mint mate) , acho que o Mac pode fazer o mesmo.


Instalar e configurar

Passos:

  • [Básico - parte]
  • Faça o download do jdk (o arquivo .tgz ) manualmente.
  • Descompacte e renomeie corretamente, em um local adequado.
    por exemplo /mnt/star/program/java/jdk-1.8
  • Crie um link virtual, que será alterado para mudar a versão java posteriormente.
    eg ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    Assim/mnt/star/program/java/java é o link suave.
  • Definido JAVA_HOMEem um script inicial.
    Pode usar arquivo como /etc/profile.d/eric.sh, ou apenas usar ~/.bashrc.
    por exemploJAVA_HOME=/mnt/star/program/java/java
  • Em seguida, abra um novo shell bash. java -versiondeve imprimir a versão java.
  • [Mais versão - parte]
  • Baixe e instale mais versão Java, conforme necessário, semelhante às etapas acima.
    por exemplo
    /mnt/star/program/java/jdk-11
  • [Switch - parte]
  • Em ~/.bashrc, defina a variável para várias versões do Java.
    por exemplo
    _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
    _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
    # dir of default version,
    _E_JAVA_HOME_D=$_E_JAVA_HOME_8
  • Em ~/.bashrc, defina o comando para alternar a versão Java.
    por exemplo
    ## switch java version,
    alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
    alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
    # default java version,
    alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
    alias jv="java -version"
  • No terminal, source ~/.bashrcpara fazer as alterações entrarem em vigor.
  • Então poderia mudar usando os comandos definidos.

Comandos - da configuração acima

Comandos:

  • jv11
    Mudar para Java 11
  • jv8
    Mudar para Java 8
  • jvd
    Alterne para a versão Java padrão, que é indicada pelos _E_JAVA_HOME_Ddefinidos acima.
  • jv
    Mostra a versão java.

Exemplo de saída:

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ 

Mecanismo

  • Ele alterna alterando o link flexível, que é usado como JAVA_HOME.

Dicas

  • Na minha máquina, quando instalo o jdk manualmente, mantenho a versão secundária e, em seguida, faço um link direto com a versão principal, mas sem a versão secundária.
    por exemplo,
    // este é o diretório real,
    jdk1.8.0_191

    // este é um link para jdk1.8.0_191
    jdk-8

    // este é um link para jdk-8oujdk-11
    java

  • Eu defino o alias de comando em ~/.bashrc, mas defino a variável em um arquivo separado.
    Estou usando ~/.eric_varpara definir as variáveis ​​e ~/.bashrca fonte (por exemplo source $HOME/.eric_var).

Eric Wang
fonte
1

Uma maneira fácil de incluir um JDK instalado separadamente na lista fornecida por /usr/libexec/java_home -Vé vincular o diretório da seguinte maneira:

sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk

Por exemplo, para registrar o JDK incluído no Android Studio (1.8.0_152 no momento da escrita), use:

sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk

Agora java_homelistará o JDK em Matching Java Virtual Machinese você pode selecioná-lo como descrito acima.

friederbluemle
fonte
1

Eu fiz isso para o terminal local com

export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)

alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'

export JAVA_HOME=$JAVA_13_HOME
Trackhe
fonte
-6

SOLUÇÃO MUITO FÁCIL: Que dor de cabeça - essa foi uma solução rápida e fácil 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 do mouse na pasta Java = Mover para a lixeira (senha necessária)

  4. Instalação: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Faça o download do Javascript SDK

  5. Verifique se a nova pasta JAVA aparece em / LIBRARY /
  6. Instale o Eclipse | Instale o Eclipse IDE para desenvolvedores Java
  7. Crescimento concluído
eric323
fonte