Articles

MungingData

jenv torna fácil executar várias versões de Java em um computador Mac. Ele também torna fácil alternar perfeitamente entre versões Java quando você muda de projetos.

executar várias versões Java é importante para os desenvolvedores Android e Apache Spark. Os desenvolvedores Spark devem usar Java 8 para projetos Spark 2 e Java 11 para projetos Spark 3, por exemplo.

Este post mostra-lhe como obter a configuração do jenv no seu computador e como usar os comandos importantes.

jenv setup

instale jenv com brew install jenv. Este é um comando dos Homebrew.

jenv usa o padrão de desenho shim para encaminhar comandos para a versão Java apropriada. Execute estes comandos para atualizar o PATH:

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrcecho 'eval "$(jenv init -)"' >> ~/.zshrc

Reiniciar o Terminal, execute echo $PATH, e verificar a saída contém .jenv caminhos que são anexadas ao padrão de diretórios do CAMINHO. Aqui está a saída na minha máquina /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

instale Java 8

Aqui está o último comando a instalar Java 8: brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 usado para trabalhar, mas agora retorna Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 também usado para trabalhar, mas agora retorna Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

uma Vez que Java é baixado, precisamos adicioná-lo manualmente para jenv. Listar as máquinas virtuais Java com ls -1 /Library/Java/JavaVirtualMachines.

adicione Java 8 à jenv com jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

define a versão global Java no seu computador com jenv global openjdk64-1.8.0.265. O comando exato em sua máquina pode ser algo ligeiramente diferente como jenv global openjdk64-1.8.0.272. Encontre o nome exato da versão com jenv versions.

verifique se os comandos de javac -versionejava -version estão a funcionar.

define a versão global Java

Macs vêm com Java pré-instalado. É sempre bom evitar usar versões de linguagem de programação instalada de sistema (aplica-se a Python e Ruby também). jenv torna mais fácil evitar o uso do sistema Java.

define a versão global Java para Java 8 com jenv global openjdk64-1.8.0.265.

Este comando simplesmente escreve a versão para o ficheiro /Users/powers/.jenv/version. Type cat /Users/powers/.jenv/version to see it’s just a file with a single line

openjdk64-1.8.0.272

All Java commands will be routed to Java 8 now that the global version is set. Isto vai garantir que evitamos atingir a versão Java do sistema.

define JAVA_HOME

lotes de bibliotecas Java dependem de ter um JAVA_HOME conjunto de variáveis de ambiente. Definir a variável de ambiente ao executar estes comandos:

jenv enable-plugin exportexec $SHELL -l

Executar echo $JAVA_HOME e verifique se que ele retorna algo como /Users/powers/.jenv/versions/openjdk64-1.8.0.272. Agora qualquer biblioteca que esteja à procura do ambiente JAVA_HOME a definir não irá falhar.

execute jenv doctor para confirmar que a sua configuração é boa. Você deve obter uma saída como esta:

 JAVA_HOME variable probably set by jenv PROMPT Java binaries in path are jenv shims Jenv is correctly loaded

Instalar o Java 11

Aqui está o comando para instalar o Java 11: brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

lembre-se que as versões Java precisam ser adicionadas manualmente ao jenv. Listar as máquinas virtuais Java com ls -1 /Library/Java/JavaVirtualMachines.

Add Java 11 to jenv with jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

jenv versions comando deve a saída agora este:

 system 1.8 1.8.0.272 11 11.0 11.0.9* openjdk64-1.8.0.272 (set by /Users/powers/.jenv/version) openjdk64-11.0.9

a Configuração do Maven

which mvn retorna /usr/local/bin/mvn, que é o sistema de versão do Maven. Semelhante ao Java, nós nunca queremos executar comandos usando o sistema Maven. Vamos usar o jenv para obter uma versão diferente do Maven.

Ativar o jenv Maven plugin com jenv enable-plugin maven e, em seguida, executar o which mvn para verificar se o mvn comandos estão a ser devidamente capturado por um jenv shim. The which mvn command should return something like /Users/powers/.jenv/shims/mvn.

pode verificar se a sua instalação Maven está a funcionar correctamente, clonando um projecto e executando o conjunto de testes. Clone o projeto JavaSpark com o comando git clone [email protected]:MrPowers/JavaSpark.git.

cdno directório do projecto e execute o conjunto de testes commvn test.

Você pode digitar mvn -v para ver a versão Maven que está sendo usada. A minha máquina está a usar Maven 3.6.3 com Java 8.

Você também pode clonar o acordo deequ e verificar que mvn test está trabalhando nesse acordo também.

definir a versão Java local para os projectos

Use o comandojenv local openjdk64-11.0.9 para definir um dado projecto para usar o Java 11 por omissão.

isto irá adicionar um ficheiro.java-version na pasta raiz do projecto. Aqui está um exemplo.

Você pode clonar os exemplos delta repo com git clone [email protected]:MrPowers/delta-examples.git, cd no diretório, e executar jenv versions para verificar se o projeto está usando automaticamente Java 11.

Aqui está o jenv versions saída do delta-examples project root directory:

jenv a capacidade de mudar automaticamente as versões Java para diferentes projectos é bastante conveniente. Você não precisa pensar em Configurar Manualmente a versão Java quando você muda os projetos.

outras formas de mudar versões Java

o projecto AdoptOpenJDK fornece orientações sobre como alternar manualmente entre versões Java SE não quiser usar o jenv. Aqui está a função que eles fornecem:

jdk() { version=$1 export JAVA_HOME=$(/usr/libexec/java_home -v"$version"); java -version }

mudar manualmente é possível, mas quem quer desperdiçar energia mental pensando sobre versões Java cada vez que eles mudam um projeto?

os próximos passos

jenv irão ajudá-lo a gerir o Java no seu Mac, mesmo que só precise de usar uma única versão.o gerenciamento de diferentes versões Java em uma determinada máquina foi uma grande dor antes de jenv aparecer. Agora, você só precisa executar alguns comandos e sua máquina pode ser configurada para executar qualquer versão Java. jenv torna mais fácil evitar acidentalmente o uso do sistema instalado pacotes Java.

jenv construiu plugins para SBT, Scala, Groovy, e muito mais. Certifique-se de permitir os plugins que são relevantes para seus fluxos de trabalho.