Quero instalar o OpenJDK Java no Mac OSX e fazê-lo funcionar junto com outros JDKs, pois é uma versão mais recente. Atualmente, baixei o tar.gz e o coloquei no meu caminho, mas isso é difícil de manter.
A única outra instalação que encontrei que faz mais coisas automaticamente é a instalação via barril Homebrew. Parece apenas a versão atual:
brew cask info java
Shows:
java: 13,33: 5b8a42f3905b406298b72d750b6919f6
https://openjdk.java.net/
Para que eu possa instalá-lo a partir daí, mas e daí? Estou preso apenas com a nova versão?
Respostas:
Nota: Essas soluções funcionam para várias versões do Java, incluindo Java 8 e o novo Java 13, e para qualquer outra versão anterior do Java coberta pelos gerenciadores de versão listados. Isso inclui JDKs alternativos do OpenJDK, Oracle, IBM, Azul, Amazon Correto, Graal e muito mais. Trabalhe facilmente com Java 7, Java 8, Java 9, Java 10, Java 11, Java 12 e Java 13!
Você tem algumas opções de como fazer a instalação, além de gerenciar a comutação JDK. A instalação pode ser feita pelo Homebrew, SDKMAN , Jabba ou uma instalação manual. A troca pode ser feita por JEnv , SDKMAN , Jabba ou manualmente, definindo
JAVA_HOME
. Todos estes são descritos abaixo.Instalação
Primeiro, instale o Java usando o método que você preferir, incluindo Homebrew, SDKMAN ou uma instalação manual do arquivo tar.gz. As vantagens de uma instalação manual é que o local do JDK pode ser colocado em um local padronizado para o Mac OSX.
Instale com SDKMAN
Este é um modelo simples, pois lida com a alternância de instalação e versão, com a ressalva de que ele instala o JDK em um diretório não padrão.
< veja abaixo "Instalando e alternando versões com o SDKMAN" >
Instale usando o Jabba
Este também é um modelo simples, pois a instalação e a alternância de versões são tratadas pela mesma ferramenta. As instalações são feitas em um diretório não padrão.
< veja abaixo "Instalando e alternando versões com o Jabba" >
Instale manualmente a partir da página de download do OpenJDK:
Faça o download do OpenJDK para Mac OSX em http://jdk.java.net/ (por exemplo, Java 13 )
Desarquive o tar do OpenJDK e coloque a pasta resultante (ou seja
jdk-13.jdk
) na sua/Library/Java/JavaVirtualMachines/
pasta, pois esse é o local padrão e esperado das instalações do JDK. Você também pode instalar onde quiser, na realidade.Instale com Homebrew
A versão do Java disponível no Homebrew Cask anterior a 3 de outubro de 2018 era de fato a Oracle JVM. Agora, no entanto, ele foi atualizado para o OpenJDK. Certifique-se de atualizar o Homebrew e você verá a versão mais recente disponível para instalação.
instale o Homebrew se você ainda não o fez. Verifique se está atualizado:
Adicione a torneira de barris, se você ainda não (ou não está mais vendo versões mais antigas do Java na etapa 3):
e para as versões AdoptOpenJDK , adicione esse toque:
Esses barris alteram suas versões do Java frequentemente, e pode haver outros toques por aí com versões adicionais do Java.
Procure por versões instaláveis:
ou para as versões AdoptOpenJDK:
Verifique os detalhes na versão que será instalada:
ou para a versão AdoptOpenJDK:
Instalar uma versão específica do JDK, como
java11
,adoptopenjdk8
, ou apenasjava
ouadoptopenjdk
para a corrente. Por exemplo:Você também pode usar o caminho completo para versões mais antigas:
E eles serão instalados no
/Library/Java/JavaVirtualMachines/
local tradicional esperado no Mac OSX.Outras opções de instalação:
Alguns outros tipos de openJDK são:
As versões do OpenJDK certificadas pela Azul Systems Java Zulu podem ser instaladas seguindo as instruções em seu site .
As versões do Amazon Correto OpenJDK oferecem um pacote de instalação fácil para a versão 8 ou 11 (outras versões estão chegando) e são instaladas no
/Library/Java/JavaVirtualMachines/
diretóriopadrãono Mac OSX.Onde está o meu JDK?!?!
Para encontrar locais dos Java JDKs instalados anteriormente nos locais padrão do sistema, use:
Você também pode relatar apenas o local de uma versão Java específica usando
-v
. Por exemplo para Java 13:Conhecer a localização dos JDKs instalados também é útil ao usar ferramentas como JEnv, adicionar uma instalação local ao SDKMAN ou vincular um JDK do sistema no Jabba - e você precisa saber onde encontrá-los.
Se você precisar encontrar os JDKs instalados por outras ferramentas, verifique estes locais:
~/.sdkman/candidates/java/
~/.jabba/jdk
Alternando versões manualmente
O executável Java é um wrapper que usará o que o JDK estiver configurado
JAVA_HOME
, para que você possa alterar também o JDK em uso.Por exemplo, se você instalou ou desmarcou o JDK 13 para
/Library/Java/JavaVirtualMachines/jdk-13.jdk
se esse for o número de versão mais alto, ele já deve ser o padrão; caso contrário, você pode simplesmente definir:E agora, qualquer que seja o executável Java no caminho, verá isso e usará o JDK correto.
O uso do
/usr/libexec/java_home
utilitário conforme descrito anteriormente ajuda a criar aliases ou a executar comandos para alterar as versões Java, identificando os locais das diferentes instalações do JDK. Por exemplo, criando aliases de shell no seu.profile
ou.bash_profile
para alterarJAVA_HOME
para você:Para alterar as versões, basta usar o alias.
Obviamente, a configuração
JAVA_HOME
manualmente também funciona!Alternando versões com JEnv
O JEnv espera que os Java JDKs já existam na máquina e possam estar em qualquer local. Normalmente você encontrará Java JDKs instalados em
/Library/Java/JavaVirtualMachines/
. O JEnv permite definir a versão global do Java, uma para o shell atual e uma versão local por diretório, útil quando alguns projetos exigem versões diferentes das outras.Instale o JEnv, caso ainda não o tenha, instruções no site http://www.jenv.be/ para instalação manual ou usando o Homebrew.
Adicione qualquer versão Java ao JEnv ( ajuste o diretório se você o tiver colocado em outro lugar ):
Defina sua versão global usando este comando:
Você também pode adicionar outras versões existentes usando de
jenv add
maneira semelhante e listar as que estão disponíveis. Por exemplo Java 8:Veja os documentos JEnv para mais comandos. Agora você pode alternar entre versões do Java (Oracle, OpenJDK, outro) a qualquer momento, para todo o sistema, para shells ou por diretório local.
Para ajudar a gerenciar
JAVA_HOME
enquanto usa o JEnv, você pode adicionar o plug - in de exportação para fazer isso por você.O plug-in de exportação pode não ser ajustado
JAVA_HOME
se já estiver definido, portanto, talvez seja necessário limpar essa variável em seu perfil para que possa ser gerenciada pelo JEnv.Você também pode usar
jenv exec <command> <parms...>
para executar comandos únicosJAVA_HOME
ePATH
definir corretamente esse comando, o que pode incluir a abertura de outro shell.Instalando e alternando versões com o SDKMAN
O SDKMAN é um pouco diferente e lida com a instalação e a alternância. O SDKMAN também coloca os JDKs instalados em sua própria árvore de diretórios, que normalmente é
~/.sdkman/candidates/java
. O SDKMAN permite definir uma versão padrão global e uma versão específica para o shell atual.Instale o SDKMAN em https://sdkman.io/install
Listar as versões Java disponíveis para garantir que você saiba o ID da versão
Instale uma dessas versões, por exemplo, Java 13:
Faça 13 a versão padrão:
Ou mude para 13 para a sessão:
Ao listar as versões disponíveis para instalação usando o comando list, você verá uma ampla variedade de distribuições de Java:
E instale versões adicionais, como o JDK 8:
O SDKMAN pode trabalhar com versões existentes instaladas anteriormente. Basta fazer uma instalação local fornecendo seu próprio rótulo de versão e a localização do JDK:
E use-o livremente:
Mais informações estão disponíveis no Guia de uso do SDKMAN, juntamente com outros SDKs que podem ser instalados e gerenciados.
O SDKMAN gerenciará automaticamente o seu
PATH
eJAVA_HOME
para você conforme você altera as versões.Instalando e alternando versões com o Jabba
O Jabba também lida com a instalação e a troca. O Jabba também coloca os JDKs instalados em sua própria árvore de diretórios, que normalmente é
~/.jabba/jdk
.Instale o Jabba seguindo as instruções na página inicial .
Lista de JDKs disponíveis
Instale o Java JDK 12
Use-o:
Você também pode usar nomes alternativos de versões, vincular a JDKs já instalados e encontrar uma mistura de JDKs interessantes, como GraalVM, Adopt JDK, IBM JDK e muito mais. O guia de uso completo também está disponível na página inicial.
O Jabba gerenciará automaticamente o seu
PATH
eJAVA_HOME
para você conforme você altera as versões.fonte
JAVA_HOME
para selecionar uma versão específica, algo comoexport JAVA_HOME=$(/usr/libexec/java_home -v <version>)
no seu.bash_profile
JAVA_HOME
definido manualmente e gerenciam eles mesmos. O JEnv com certeza não o ajustará se definido anteriormente, não tem certeza sobre o Jabba e o SDKMAN, mas eles normalmente gerenciarão essa configuração. Somente uma instalação manual sem alternância de versão deve definir esse valor diretamente.Foi assim que eu fiz.
Etapa 1: instalar o Java 11
Você pode baixar o Java 11 dmg para mac a partir daqui: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
Etapa 2: Após a instalação do Java 11. Confirme a instalação de todas as versões. Digite o seguinte comando no seu terminal.
Etapa 3: Editar .bash_profile
Etapa 4: adicione 11.0.1 como padrão. (Adicione a linha abaixo ao arquivo bash_profile).
para mudar para qualquer versão
Agora pressione CTRL + X para sair do bash. Pressione 'Y' para salvar as alterações.
Etapa 5: recarregar bash_profile
Etapa 6: confirmar a versão atual do Java
fonte
Alternando manualmente a versão padrão do sistema sem ferramentas de terceiros:
Conforme detalhado nesta resposta anterior , no macOS
/usr/bin/java
é uma ferramenta de empacotador que usará a versão Java apontada porJAVA_HOME
ou se essa variável não estiver definida procurará instalações Java em/Library/Java/JavaVirtualMachines/
e usará a versão com a mais alta. Ele determina as versões olhandoContents/Info.plist
sob cada pacote.Armado com esse conhecimento, você pode:
Info.plist
nas versões que você não deseja usar como padrão (esse arquivo não é usado pelo próprio tempo de execução Java).$JAVA_HOME
Acabei de verificar que isso ainda é verdade no OpenJDK & Mojave.
Em um sistema totalmente novo, não há versão Java instalada:
Cancele isso, faça o download do OpenJDK 11 e 12ea em https://jdk.java.net ; instale o OpenJDK11:
O sistema java agora é 11:
Instale o OpenJDK12 (acesso antecipado no momento):
O sistema java agora tem 12 anos:
Agora vamos "ocultar" o OpenJDK 12 do wrapper java do sistema:
O java do sistema voltou ao 11:
E você ainda pode usar a versão 12 pontualmente configurando manualmente
JAVA_HOME
:fonte
Se você possui várias versões instaladas em sua máquina, adicione o seguinte no perfil do bash:
E adicione os seguintes aliases:
E pode alternar para a versão necessária usando o alias:
No terminal:
~ >> java7 export JAVA_HOME=$JAVA_7_HOME
fonte
Outra alternativa é usar o SDKMAN ! Veja https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/
Primeiro instale o SDKMAN: https://sdkman.io/install e depois ...
sdk install java 8.0.181-oracle
sdk install java 11.0.0-open
Para mudar:
sdk use java 8.0.181-oracle
sdk use java 11.0.0-open
Para definir um padrão:
sdk default java 8.0.181-oracle
sdk default java 11.0.0-open
fonte
Com Homebrew e jenv:
Suposição: máquina Mac e você já instalou o homebrew.
Instale o barril:
Para instalar o java mais recente:
Para instalar o java 8:
Para instalar o java 9:
Se você deseja instalar / gerenciar várias versões, use 'jenv':
Instale e configure o jenv:
Adicione o java instalado ao jenv:
Para ver todo o java instalado:
O comando acima fornecerá a lista de java instalado:
Configure a versão java que você deseja usar:
fonte
Error: caskroom/cask was moved. Tap homebrew/cask-cask instead
, Entãofatal: repository 'https://github.com/Homebrew/homebrew-cask-cask/' not found
IMHO, não há necessidade de instalar todos os aplicativos / pacotes adicionais.
Verifique as versões disponíveis usando o comando:
Agora, se você quiser escolher o Azul JDK 8 na lista acima, e NÃO o Java SE 8 da Oracle, chame o comando como abaixo:
Para escolher o Java SE 8 da Oracle, você chamaria o comando:
Como você pode ver, o número da versão fornecida deve ser o conjunto exclusivo de strings: 1.8.0_181 vs 1.8.0_151
fonte
1.8.0_181-zulu-8.31.0.1
? ou é correspondência parcial?JAVA_HOME
. A troca manual usando esses comandos é abordada em minha outra resposta.