Articles

MungingData

jenv facilita la ejecución de varias versiones de Java en un ordenador Mac. También facilita el cambio sin problemas entre las versiones de Java al cambiar de proyecto.

Ejecutar varias versiones de Java es importante para los desarrolladores de Android y Apache Spark. Los desarrolladores de Spark deben usar Java 8 para proyectos de Spark 2 y Java 11 para proyectos de Spark 3, por ejemplo.

Esta entrada de blog le muestra cómo configurar jenv en su computadora y cómo usar los comandos importantes.

configuración de jenv

Instale jenv con brew install jenv. Este es un comando casero.

jenv utiliza el patrón de diseño shim para enrutar comandos a la versión de Java apropiada. Ejecuta los siguientes comandos para actualizar el PATH:

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

Reinicie el Terminal, ejecute echo $PATH, y verificar la salida contiene .jenv rutas que se antepone a la RUTA estándar de directorios. Aquí está la salida de mi máquina /Users/powers/.jenv/shims:/Users/powers/.jenv/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin.

Instalar Java 8

Este es el último comando para instalar Java 8: brew cask install adoptopenjdk/openjdk/adoptopenjdk8.

brew cask install adoptopenjdk8 se utiliza para el trabajo, pero ahora devuelve Error: Cask 'adoptopenjdk8' is unavailable: No Cask with this name exists.

brew cask install caskroom/versions/adoptopenjdk8 también se usa para el trabajo, pero ahora devuelve Error: caskroom/versions was moved. Tap homebrew/cask-versions instead.

una Vez que Java es descargado, tenemos que añadirlo manualmente a jenv. Enumere las máquinas virtuales Java con ls -1 /Library/Java/JavaVirtualMachines.

Agregue Java 8 a jenv con jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/.

Establezca la versión global de Java en su computadora con jenv global openjdk64-1.8.0.265. El comando exacto en su máquina puede ser algo ligeramente diferente, como jenv global openjdk64-1.8.0.272. Encuentre el nombre exacto de la versión con jenv versions.

asegúrese de que el javac -version y java -version comandos de trabajo.

Establecer la versión global de Java

Los Mac vienen con Java preinstalado. Siempre es bueno evitar el uso de versiones de lenguaje de programación instaladas en el sistema (también se aplica a Python y Ruby). jenv hace que sea fácil evitar el uso del sistema Java.

Establezca la versión global de Java en Java 8 con jenv global openjdk64-1.8.0.265.

Este comando simplemente escribe la versión en el archivo /Users/powers/.jenv/version. Escriba cat /Users/powers/.jenv/version para ver que es solo un archivo con una sola línea

openjdk64-1.8.0.272

Todos los comandos de Java se enrutarán a Java 8 ahora que la versión global está configurada. Esto asegurará que evitemos golpear la versión Java del sistema.

Set JAVA_HOME

Muchas bibliotecas Java dependen de tener un conjunto de variables de entorno JAVA_HOME. Establezca la variable de entorno ejecutando estos comandos:

jenv enable-plugin exportexec $SHELL -l

Run echo $JAVA_HOMEy compruebe que devuelve algo como /Users/powers/.jenv/versions/openjdk64-1.8.0.272. Ahora, cualquier biblioteca que esté buscando el entorno JAVA_HOME a configurar no producirá errores.

Ejecutejenv doctor para confirmar que la configuración es buena. Usted debe obtener una salida como esta:

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

Instalar Java 11

Aquí es el comando para instalar Java 11: brew cask install adoptopenjdk/openjdk/adoptopenjdk11.

Recuerde que las versiones de Java deben agregarse manualmente a jenv. Enumere las máquinas virtuales Java con ls -1 /Library/Java/JavaVirtualMachines.

Agregue Java 11 a jenv con jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/.

El jenv versions comando de salida ahora esto:

 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

Configuración de Maven

which mvn devuelve /usr/local/bin/mvn, que es el sistema de la versión de Maven. Al igual que en Java, nunca queremos ejecutar comandos utilizando el Maven del sistema. Usemos jenv para obtener una versión diferente de Maven.

Habilite el complemento Maven de jenv con jenv enable-plugin maven y luego ejecute which mvnpara verificar que los comandos mvn están siendo capturados correctamente por una cuña jenv. El which mvn comando debe devolver algo como /Users/powers/.jenv/shims/mvn.

Puede verificar que su instalación Maven funciona correctamente clonando un proyecto y ejecutando el conjunto de pruebas. Clona el proyecto JavaSpark con el comando git clone [email protected]:MrPowers/JavaSpark.git.

cden el directorio del proyecto y ejecute el conjunto de pruebas con mvn test.

Puede escribir mvn -v para ver la versión Maven que se está utilizando. Mi máquina está usando Maven 3.6.3 con Java 8.

También puede clonar el repositorio de deequ y verificar que mvn test también esté funcionando en ese repositorio.

Configuración de la versión local de Java para proyectos

Utilice el comando jenv local openjdk64-11.0.9 para establecer que un proyecto determinado use Java 11 de forma predeterminada.

Esto agregará un archivo.java-version en la carpeta raíz del proyecto. He aquí un ejemplo.

Puede clonar el repositorio de delta-examples con git clone [email protected]:MrPowers/delta-examples.git, cd en el directorio y ejecutar jenv versions para verificar que el proyecto esté usando Java 11 automáticamente.

Aquí está la salida jenv versions del directorio raíz del proyecto delta-examples:

 system 1.8 1.8.0.272 11 11.0 11.0.9 openjdk64-1.8.0.272* openjdk64-11.0.9 (set by /Users/powers/Documents/code/my_apps/delta-examples/.java-version)

la capacidad de jenv para cambiar automáticamente las versiones de Java para diferentes proyectos es bastante conveniente. No es necesario que piense en configurar manualmente la versión de Java cuando cambie los proyectos.

Otras formas de cambiar de versión de Java

El proyecto AdoptOpenJDK proporciona orientación sobre cómo cambiar manualmente entre versiones de Java si no desea utilizar jenv. Esta es la función que proporcionan:

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

Cambiar manualmente es posible, pero ¿quién quiere desperdiciar energía mental pensando en las versiones de Java cada vez que cambia de proyecto?

Próximos pasos

jenv le ayudará a administrar Java en su Mac, incluso si solo necesita usar una sola versión.

Administrar diferentes versiones de Java en una máquina determinada era un gran problema antes de que llegara jenv. Ahora, solo necesita ejecutar unos pocos comandos y su máquina se puede configurar para ejecutar cualquier versión de Java. jenv hace que sea fácil evitar el uso accidental de los paquetes Java instalados en el sistema.

jenv ha incorporado complementos para SBT, Scala, Groovy y más. Asegúrese de habilitar los complementos que sean relevantes para sus flujos de trabajo.