Skip to main content

Command Palette

Search for a command to run...

Multiple Java Versions

Updated
•2 min read•View as Markdown
Multiple Java Versions

If you use multiple versions of Java in your development environment, perhaps you wished there was a better way to switch from one to the other, instead of remembering to set the JAVA_HOME environment variable.


Forgot to set the JAVA_HOME environment variable? If you use multiple versions of Java in your development environment, perhaps you wished there was a better way to switch from one to the other, instead of remembering to set the JAVA_HOME environment variable. Introducing jEnv:

💡
jEnv is a command line tool to help you forget how to set the JAVA_HOME environment variable.

Install

In the following sections, we describe the installation procedure of jEnv on Linux and macOS environments.

Linux

Simply clone the jEnv repository from GitHub:

git clone https://github.com/gcuisinier/jenv.git ~/.jenv

macOS

We need the Homebrew package manager for macOS:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install jEnv using brew:

brew install jenv

Configure

Update your command line environment with jEnv-specific configuration:

export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"
alias jenv_set_java_home='export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"'

Next, you'll need to add the JAVA home directory paths to your jEnv environment. To list all the JVM versions and architectures in your environment, run:

/usr/libexec/java_home -V

You may get an output similar to (e.g., on macOS):

Matching Java Virtual Machines (3):
    11.0.1, x86_64:    "OpenJDK 11.0.1"    /Library/Java/JavaVirtualMachines/openjdk-11.0.1.jdk/Contents/Home
    1.8.0_192, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home
    1.8.0_101, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home

Based on the JVM list above you may add the JAVA home directory paths to your jEnv environment, e.g.:

jenv add /Library/Java/JavaVirtualMachines/openjdk-11.0.1.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home

Now your jEnv environment is ready to manage the various JVM versions in your development environment.

jenv versions

The aforementioned command would yield an output similar to:

  system
  1.8
  1.8.0.192
  11.0
  11.0.1
  openjdk64-11.0.1
  oracle64-1.8.0.192

You can set specific versions of JVM per workspace directory. Assuming you have a directory with a Java code base requiring JVM 1.8, you can switch to that directory and set the JVM version of choice, e.g.:

jenv local 1.8

You may still choose a default global version of JVM on your system, e.g., 11:

jenv global 11

Happy Java coding!

Resources

http://www.jenv.be/

More from this blog

D

devshell.io

6 posts