Java é um pacote opcional nas versões mais recentes do macOS.
No entanto, uma vez instalada, parece que a variável de ambiente JAVA_HOME não está configurada corretamente .
Java é um pacote opcional nas versões mais recentes do macOS.
No entanto, uma vez instalada, parece que a variável de ambiente JAVA_HOME não está configurada corretamente .
Respostas:
Com o pacote opcional Java ou o Oracle JDK instalado, adicionar uma das seguintes linhas ao seu arquivo ~ / .bash_profile configurará a variável de ambiente de acordo.
export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
Atualização: sinalizador -v adicionado com base na resposta de Jilles van Gurp .
/usr/libexec/java_home
não é um diretório, mas um executável. Ele gera o JAVA_HOME atualmente configurado e, na verdade, não o altera. É para isso que serve o aplicativo Java Preferences, que, no meu caso, parece quebrado e não altera a JVM corretamente. Ele lista a JVM 1.7, mas eu posso alternar / desarmar, arrastar e soltar tudo o que quero lá, sem realmente alterar a saída de /usr/libexec/java_home
.
Mesmo depois de instalar o 1.7.0 u6 do Oracle no Lion e defini-lo como padrão nas preferências, ele ainda retornou o apple 1.6 java para casa. A única correção que realmente funciona para mim é definir JAVA_HOME manualmente:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Pelo menos desta maneira, quando executado a partir da linha de comando, ele usará 1.7. /usr/libexec/java_home
ainda insiste em 1.6.
Atualização : Noções básicas sobre Java a partir da linha de comando no OSX, há uma explicação melhor sobre como isso funciona.
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
é a maneira de fazer isso. Observe que atualizá-lo para 1.8 funciona perfeitamente.
Para mim, o Mountain Lion 10.8.2, a solução mais votada não funciona. Eu instalei o jdk 1.7 via Oracle e o maven do homebrew.
Minha solução é do arquivo hadoop-env.sh do hadoop, que eu instalei também do homebrew. Eu adiciono a frase abaixo em ~ / .bash_profile, e funciona.
export JAVA_HOME="$(/usr/libexec/java_home)"
Esta solução também funciona para OS X Yosemite com Java 1.8 instalado da Oracle.
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Nenhuma das respostas acima me ajudou. Suponho que todas as respostas são para idososOS X
Para o OS X Yosemite 10.10, siga estas etapas
Use seu editor de texto favorito para abrir: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
Adicione a seguinte linha no arquivo e salve-a (: seguida de "x" para vim):
export JAVA_HOME=$(/usr/libexec/java_home)
Em seguida, no terminal, digite os dois comandos a seguir para ver a saída:
$ source ~/.bash_profile
$ echo $JAVA_HOME
Na segunda linha, você está atualizando o conteúdo do .bash_profile
arquivo.
Atualização para Java 9 e alguns aliases puros.
Em .bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Observe que, para a versão mais recente, é 9
e não 1.9
.
Defina Java ativo:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Algum alias adicional para alternar entre as diferentes versões:
alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'
Teste no terminal:
% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
EDIT: atualização para Java 10
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
EDIT: atualização para Java 11
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
O exemplo acima não funcionou para mim com as ferramentas EC2 da Amazon, porque espera bin/java
etc. embaixo JAVA_HOME
. /System/Library/Frameworks/JavaVM.framework/Home
funcionou.
No Mac OS X Lion, para definir o visualgc para execução, usei:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
? o comando / usr / libexec / java_home retorna /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
O seguinte funcionou para mim. Estou usando o ZSH no OSX Yosemite com o Java 8 instalado.
O comando a seguir /usr/libexec/java_home
emite o caminho para a página inicial do JDK:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
No seu ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
Uma maneira melhor (mais atualizável) é usar o seguinte:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Isso deve funcionar com a AWS também uma vez que tem bin
debaixo Início
JVMs Oracle mais recentes, como 1.7.0_21-b12, parecem instalar aqui:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
ferramenta retorna um erro para essas versões do Java.
para macOS Mojave 10.14.1 e JAVA 11.0.1, defino o perfil como
export JAVA_HOME=$(/usr/libexec/java_home)
digite o terminal this para confirmar:
$JAVA_HOME/bin/java -version
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)
Minha abordagem é:
.bashrc
export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME
# -- optional
# export PATH=$JAVA_HOME/bin:$PATH
Isso torna muito fácil alternar entre J6 e J7
Eu tive que defini-lo explicitamente para o caminho exato no meu ar Macbook.
Passos seguidos:
echo $JAVA_HOME
(se estiver definido, ele mostrará o caminho); caso contrário, tente procurá-lo usandosudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
Estou executando o MACOS MOJAVE - 10.14.2 (18C54) em um Macbook Air com JAVA 8
No Mac OS X 10.9, instalei a versão mais recente do JRE a partir do Oracle e, em seguida, redefinii o JAVA_HOME para /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home.
Tenho certeza de que há uma maneira melhor, mas me colocou em funcionamento.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
OSX Yosemite, ZSH e Java SE Runtime Environment 8, tive que:
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin
e em ~ / .zshrc, mude JAVA_HOME para
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
Obtive o mesmo problema após a atualização do meu Mac OS e o seguinte funcionou para mim:
cmd> vi ~ / .bash_profile
Adicione / atualize a linha para JAVA_HOME: export JAVA_HOME = "/ Biblioteca / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Conteúdo / Home"
cmd> source ~ / .bash_profile ou abra um novo terminal
Eu acho que a versão do jdk pode ser diferente, então use a versão que você possui em / Library / Java / JavaVirtualMachines /
Se você precisar de várias versões do JDK no Mac OS X (Yosemite), pode ser útil adicionar alguns scripts para alternar automaticamente entre eles.
O que você faz é editar seu ~ / .bash_profile e adicionar o seguinte:
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
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
O que o script faz é primeiro remover outras versões do JDK no PATH para que elas não interfiram na nossa nova versão do JDK. Em seguida, faz um uso inteligente de / usr / libexec / java_home, que é um comando que lista as versões instaladas do JDK. O argumento -v diz ao java_home para retornar o caminho do JDK com a versão fornecida, por exemplo 1.7. Também atualizamos o PATH para apontar para o diretório bin do diretório JAVA_HOME recentemente encontrado . No final, podemos simplesmente executar a função usando
setjdk 1.7
que seleciona a versão mais recente do JDK instalada da ramificação 1.7. Para selecionar uma versão específica, você pode simplesmente executar
setjdk 1.7.0_51
em vez de. Execute / usr / libexec / java_home -V para obter mais detalhes sobre como escolher versões.
PS Não se esqueça de fonte ~ / .bash_profile depois de salvá-lo.
Esta resposta está relacionada ao leão da montanha e não ao leão. Eu precisava fazer isso nas ferramentas de linha de comando da AWS. De acordo com os documentos da AWS , a execução which java
retorna /usr/bin/java
.
Então, eu JAVA_HOME=/usr
coloquei no meu .bashrc
.
Aparentemente, /usr/bin/java
é um link simbólico ao /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
qual faz tudo funcionar.
Atualizar
Conforme mencionado no comentário abaixo, esse JAVA_HOME
valor não é uma solução ideal quando a JAVA_HOME
variável de ambiente deve ser usada por outras coisas que não as Ferramentas de Linha de Comando da AWS. Porém, ele funciona bem para as Ferramentas de linha de comando da AWS, conforme indicado nos documentos.
Para Mac Yosemite,
O JDK 1.7.0_xx está usando
$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
Estou usando o shell de peixe no High Sierra 10.13.4 e instalei o Java via Brew.
Não é configurado automaticamente, portanto, para configurá-lo corretamente no meu sistema, eu corro:
set -U JAVA_HOME (/usr/libexec/java_home)
Basta definir java_home da versão 1.8 jdk no netbeans.conf
arquivo:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
linha de comentário:
netbeans_jdkhome="path/to/jdk"
e defina o caminho para o seu 1,8 jdk, no meu caso:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
Essa abordagem permite que você tenha várias versões do jdk no mac os
Para usuários do terminal Fish no Mac (acredito que também esteja disponível no Linux), isso deve funcionar:
set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8 //or whichever version you want as default
para usuário de mac. java 8 deve adicionar
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
java 6:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home