Skip to content

Instantly share code, notes, and snippets.

@brightzheng100
Last active February 5, 2020 04:38
Show Gist options
  • Save brightzheng100/20bd34c37367219340bdb359040370dd to your computer and use it in GitHub Desktop.
Save brightzheng100/20bd34c37367219340bdb359040370dd to your computer and use it in GitHub Desktop.
Java Development in Mac Tips

Project Lombok is cool, but it's not installed by default for most of the IDEs. So a simple installation process might be required.

For STS/Eclipse

  1. We may download the lombok.jar from here, or use the one in your ~/.m2/repository/org/projectlombok/ folder;
  2. Run java -jar <THE-PATH-TO-YOUR-JAR>;
  3. It will prompt up an UI for you to pick up what IDEs (e.g. Eclipse, STS) to install for, choose yours;
  4. Click install button and it's done.

Note: for STS/Eclipse, it will actually copy the jar file to IDE's folder and update its .ini file. For example, it adds below in /Applications/STS.app/Contents/Eclipse/STS.ini file:

...
-javaagent:/Applications/STS.app/Contents/Eclipse/lombok.jar

For VS Code

There is an addon we can install to make VS Code have lombok support. Search this addon by keyword lombok will do.

To support multiple Java version, with ZSH:

1. Pick The Right JDKs with Right Versions

For example, we're going to have two JDKs, v8 and v11, with HotSpot installed.

$ export JDK8=adoptopenjdk8
$ export JDK11=adoptopenjdk11

Or if OpenJDK with OpenJ9 (instead of HotSpot)

$ export JDK8=adoptopenjdk8-openj9
$ export JDK11=adoptopenjdk11-openj9

Note: check the available versions here

2. Install Multiple Java Versions:

$ brew cask install ${JDK8}
$ brew cask install ${JDK11}

3. Make then switchable, with a default version:

$ cat <<EOF >> ~/.zshrc
# Multiple Java Versions
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'

#default java11
export JAVA_HOME=$JAVA_11_HOME
EOF

Now, to switch versions, do this:

$ java8
$ java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode)

$ java11
$ java -version
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)

Note: as the process has nothing special, you may simply do it in ~/.bash_profile too with pure Bash env

Sometimes STS/Eclipse failed to start: failed to create java virtual machine.

It might be caused by multiple JDKs installed.

So we have to specify if it helps.

$ sudo vi /Applications/STS.app/Contents/Eclipse/STS.ini
...
-vm
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java
-vmargs
...

Note: -vm must be before -vmargs!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment