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:
MatchingJavaVirtualMachines(3):1.8.0_05, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home1.6.0_65-b14-462, x86_64:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home1.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:
@ 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.
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).
(*) 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.
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 RuntimeEnvironment(build 1.8.0_102-b14)JavaHotSpot(TM)64-BitServer VM (build 25.102-b14, mixed mode)
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:
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:
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
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.
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:?;;")
}
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.
**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.Usagefor bash-style shells:
$ export JAVA_HOME=`/usr/libexec/java_home`Usagefor csh-style shells:% setenv JAVA_HOME `/usr/libexec/java_home`
Primeiro descubra onde você armazena as variáveis de ambiente -
emacs
bash_profile
arquivo zshrc
Etapas para configurar a variável de ambiente: -
Faça o download do jdk do JAVA
instale-o com um clique duplo
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
b. Para configuração do perfil ZSH -
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home2. 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/Home4. java -version
--> java version "1.8.0_112"Java(TM) SE RuntimeEnvironment(build 1.8.0_112-b16)JavaHotSpot(TM)64-BitServer VM (build 25.112-b16, mixed mode)
Tudo pronto Agora você pode atualizar ou degradar facilmente a versão JAVA.
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 8Switching java version 8Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/usr/bin/java
java version "1.8.0_131"Java(TM) SE RuntimeEnvironment(build 1.8.0_131-b11)JavaHotSpot(TM)64-BitServer VM (build 25.131-b11, mixed mode)
Mudar para Java 9
$ jdk 9Switching java version 9Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/usr/bin/java
java version "9.0.1"Java(TM) SE RuntimeEnvironment(build 9.0.1+11)JavaHotSpot(TM)64-BitServer VM (build 9.0.1+11, mixed mode)
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 579msWed14Feb11:44:012018MatchingJavaVirtualMachines(3):9.0.1, x86_64:"Java SE 9.0.1"/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home1.8.0_162, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home1.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 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;}
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 RuntimeEnvironment(build 1.8.0_191-b12)JavaHotSpot(TM)64-BitServer 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 RuntimeEnvironment18.9(build 11.0.1+13-LTS)JavaHotSpot(TM)64-BitServer 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 RuntimeEnvironment(build 1.8.0_191-b12)JavaHotSpot(TM)64-BitServer 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).
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:
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
É um JavaOne simples que pode ser usado para definir a versão Java atual. A versão pode ser usada em um shell que é aberto após a seleção de uma versão na ferramenta.
/usr/libexec/java_home
lhe diz?Respostas:
Primeira execução,
/usr/libexec/java_home -V
que produzirá algo como o seguinte:Escolha a versão que você deseja que seja o padrão (
1.6.0_65-b14-462
por razões de argumentos) e depois:ou você pode especificar apenas a versão principal, como:
Agora, quando você executar,
java -version
você verá:Adicione a
export JAVA_HOME…
linha ao arquivo init do seu shell.Para o Bash (conforme declarado por antonyh ):
Para peixes (como declarado por ormurin)
fonte
export
linhaexport 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.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:
/Library/Java/JavaVirtualMachines
. O sistema escolherá a versão mais alta por padrão.Contents/Info.plist
paraInfo.plist.disabled
. Esse JDK ainda pode ser usado quando$JAVA_HOME
aponta 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.fonte
jenv
nemJAVA_HOME
é capaz de definir a versão java em todo o sistema, ou seja, a que o Eclipse usaria./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. "Adicionando as respostas acima, coloquei as seguintes linhas no meu
.bash_profile
(ou.zshrc
no MacOS 10.15+), o que torna muito conveniente alternar (incluindo o comentário de @ elektromin para o java 9):Após a inserção, execute
$ source .bash_profile
Eu posso mudar para o Java 8 digitando o seguinte:
fonte
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"
e, em seguida, digitaçãoj10
permite que você alterne de volta para a versão atual do Java (no meu caso Java 10)nvm
de comutação versões do Java, mas a siglajvm
já significa algo mais :)/Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
Uma pequena função fish baseada em / usr / libexec / java_home
Se você não usa peixe, pode fazer algo semelhante no bash:
Para alternar entre javas, faça:
ref: https://gist.github.com/kenglxn/1843d552dff4d4233271
fonte
export JAVA_HOME=(/usr/libexec/java_home $argv)
vez da segunda linha da suajhome
função.É 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 -snf
para alterar o link para atualjava
. Para fazer isso, abra o Terminal e execute o comando:Observe 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 ondejdk_1.7.0_xx.jdk
foi instalado. Abra novamente o terminal e digite:Você pode adicionar a
export JAVA_HOME
linha acima no seu.bashrc
arquivo para ter o java permanentemente no seu Terminalfonte
JAVA_HOME
será exportada na sessão atual do Terminal. Você pode adicioná-lo ao nosso,.bashrc
se quiser. Vou adaptar os comandos para a última versão.Usar jenv é uma maneira fácil.
1.Instale o jenv
2.Config jenv
3.Ligue o caminho do jdk
4.Você está pronto
comando switch:
conjunto padrão:
fonte
instale o JDK, não apenas o JRE
dá
Próximo
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:
tente o comando:
javac -version
deve produzir:
fonte
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
fonte
Use jenv, é como um gerenciador de ambiente Java. É super fácil de usar e limpar
Para Mac, siga as etapas:
Instalação: se você estiver usando o bash, siga estas etapas:
Adicione versões desejadas da JVM ao jenv:
Verifique as versões instaladas:
Defina a versão do Java que você deseja usar:
fonte
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:?;;") }
fonte
Quatro etapas fáceis usando o terminal para pessoas que usam o processo padrão .. :)
echo $JAVA_HOME
dá-lhe atual java home. Por exemplo:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/
levará você para a pasta em que você normalmente instala o jdks (pode ser diferente para suas máquinas)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
:)export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'
vai mudar a casa do java ..fonte
adicione o seguinte comando ao
~/.zshenv
arquivofonte
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 arquivoInfo.plist
para outra coisa,Info.plist.disabled
para que o sistema operacional escolha uma versão anterior.fonte
Na página do manual oficial java_home (1) da Apple :
fonte
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á.
fonte
Primeiro descubra onde você armazena as variáveis de ambiente -
Etapas para configurar a variável de ambiente: -
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
b. Para configuração do perfil ZSH -
Tudo pronto Agora você pode atualizar ou degradar facilmente a versão JAVA.
fonte
Script do switch JDK
Adaptei a resposta do @Alex acima e escrevi o seguinte para corrigir o código do Java 9.
Mudar para Java 8
Mudar para Java 9
fonte
Você pode adicioná-lo ao seu .bash_profile para que a versão seja definida por padrão.
fonte
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
Para saber qual versão / versão secundária você instalou, você pode:
fonte
Se você possui várias versões e deseja executar algo usando uma versão específica, use este exemplo:
fonte
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
https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4
fonte
Aqui está como eu faço no meu Linux (Ubuntu / Mint mate) , acho que o Mac pode fazer o mesmo.
Instalar e configurar
Passos:
por exemplo
/mnt/star/program/java/jdk-1.8
eg
ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
Assim
/mnt/star/program/java/java
é o link suave.JAVA_HOME
em um script inicial.Pode usar arquivo como
/etc/profile.d/eric.sh
, ou apenas usar~/.bashrc
.por exemplo
JAVA_HOME=/mnt/star/program/java/java
java -version
deve imprimir a versão java.por exemplo
/mnt/star/program/java/jdk-11
~/.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
~/.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"
source ~/.bashrc
para fazer as alterações entrarem em vigor.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_D
definidos acima.jv
Mostra a versão java.
Exemplo de saída:
Mecanismo
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-8
oujdk-11
java
Eu defino o alias de comando em
~/.bashrc
, mas defino a variável em um arquivo separado.Estou usando
~/.eric_var
para definir as variáveis e~/.bashrc
a fonte (por exemplosource $HOME/.eric_var
).fonte
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:Por exemplo, para registrar o JDK incluído no Android Studio (1.8.0_152 no momento da escrita), use:
Agora
java_home
listará o JDK emMatching Java Virtual Machines
e você pode selecioná-lo como descrito acima.fonte
Eu fiz isso para o terminal local com
fonte
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 Java atual. A versão pode ser usada em um shell que é aberto após a seleção de uma versão na ferramenta.
fonte
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
Use as teclas de atalho: CMD + SHIFT + G - digite "/ Library /"
Encontre a pasta JAVA
Clique com o botão direito do mouse na pasta Java = Mover para a lixeira (senha necessária)
Instalação: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Faça o download do Javascript SDK
fonte