< Back to blog

Configuring jenv the right way

Since many of our applications are continuously being upgraded to latest java versions, most of us may have already installed jenv command line tool. But, does it really work the way it should for you? Or, are you struggling to understand or configure it the right way?

Background

jenv is a cool tool that helps you switch between different java versions in your development machine. But unfortunately, the documentation in http://www.jenv.be/ is not proper to help you with the setup. There’s something more you need to do to make it work properly. This blog is for the newbies who are trying out jenv for the first time or for those who still couldn’t get it working properly.

You could try following the steps mentioned in jenv website, but I bet, you won’t get it working, right away!

Setup

Okay, lets get startled ;) !!!!

  • Install jenv. I preferred to use Homebrew… $ brew install jenv

  • Run the following commands :
    $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
    $ echo 'eval "$(jenv init -)"' >> ~/.bash_profile

  • Now, before you do anything else, you must run unset JAVA_TOOL_OPTIONS on your terminal (in case you have output that breaks the text parsing). Without this the command following below will not work as expected.

  • Check you jdk installation directories.. and then run the below commands as appropriate for you..
    $ jenv add /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
    You can add multiple jdks if you want.

  • Type jenv versions on terminal. You would see something similar to this..

  system (set by /Users/sujithsreekumar/.jenv/version)
  - 1.8
  - 1.8.0.92
  - 10.0
  - 10.0.1
  - 9.0
  - 9.0.1
  - oracle64-1.8.0.92
  - oracle64-10.0.1
  - oracle64-9.0.1

You could remove the ones like oracle64-1.8.0.92, oracle64-10.0.1 etc. that got added by itself, by using the command jenv remove oracle64-1.8.0.92. But that’s completely optional… You could leave them there if you want. No harm.

Are we done? Not yet!!!

There are a couple of things more that you need to do to get it working properly…

  • Run the following commands if you are using maven :
    $ jenv enable-plugins maven
    $ jenv enable-plugins export

PS : If you get errors stating that the command enable-plugins is not found, you must restart your terminal and things should work properly thereafter.

I had to run jenv enable-plugins export because my jenv was not able to control my JAVA_HOME. Also failing to run jenv enable-plugins maven will throw weird errors when trying to compile your project.

Now.. You are all set…

Verify

You mostly only will need to use jenv local to set the java version for your project. You may cd to your project directory and type
$ jenv local 10.0

With this command, a .java-version file gets auto created in your project directory. You may opt to add this file in .git-ignore list (if you want).

Now, if you type
$ echo $JAVA_HOME
OR
$ javac -version
You should be seeing the currently set version (which should be java 10.0 or 10.0.1 as per the above example) as you java version. If not, something’s not right, and you may not get the intended behaviour out of your jenv.

Hope this helps… Happy Coding!

< Back to blog