Install HomeBrew first
brew update brew tap caskroom/cask brew install brew-cask
If you get the error "already installed", follow the instructions to unlink it, then install again:
brew unlink brew-cask brew install brew-cask
brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup
Install Java 7 and 8
People on the Stackoverflow cautioned not to install 8 until 7 is installed. So we are going to install JDK 7 first.
Unlike other version managers such as NVM, jEnv itself doesn’t install JDKs. You have to do it yourself. Luckily, Homebrew Cask made this task really easy. But before doing that, let’s check if we already have JDK 7 installed by Homebrew Cask:
brew tap caskroom/versions brew cask info java7
install Java 7:
brew cask install java7
If you run into permission issue, add sudo at the beginning of the above command.
As of today, Java 8 is the latest stable. Run the following command to install Java 8:
brew cask install java
These two JDKs will be installed at the following directories. Your JDKs’ minor and patch versions might be different.
Now it is time to install jEnv:
brew install jenv
Add the following lines to ~/.bash_profile. This will initialize jEnv.
# Init jenv if which jenv > /dev/null; then eval "$(jenv init -)"; fi
jEnv doesn’t install JDKs, so we have to tell jEnv where to look for them. Type these commands to register JDKs in jEnv (replace the minor and patch versions with yours):
jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/
After that, run this command to list all registered JDKs:
The version with an asterisk is the active version.
In my case, I need to keep JDK 7 as my default version, so I set the global version to 1.7:
jenv global oracle64-126.96.36.199
And in my project, I set the local JDK version to 1.8:
cd <my project> jenv local oracle64-188.8.131.52
The above command will create a .java-version file at project root. Its content is the version I just picked for this project: