59
votes

After upgrading to OSX 10.8.4, background Java processes started placing a Java Cup icon in the Dock. It causes the currently active window to loose focus which is very annoying when running some script that forks many short running Java processes (headless). The file menu (top of the screen next to the apple symbol will show the name of the class file that Java is running, e.g. org.apache.hadoop.util.RunJar).

Since I'm not explicitly launching these Java commands, I've tried putting alias java="java -Djava.awt.headless=true" in .profile but this doesn't seem to help.

Has anyone run into this and know how to fix it?

Thank you.

4
see comment on my answerEGHM

4 Answers

64
votes

Like @EGHM said, it's -Dapple.awt.UIElement=true, but with no quotes. At least it works for me (OS X 10.7.5).

If you happen to be using Eclipse, you can add this JVM argument globally in Preferences → Installed JREs:

enter image description here

17
votes

Like @EHGM and @Nelson pointed out, -Dapple.awt.UIElement=true needs to be added as an argument to the JVM.

You can set it globally for all java applications launched from the command line (or a shell) by adding it to the JAVA_TOOL_OPTIONS environment variable.

export JAVA_TOOL_OPTIONS="-Dapple.awt.UIElement=true"

You could add the export statement to your $HOME/.bashrc or whatever startup script relevant to the shell you're using.

9
votes

Try -Dapple.awt.UIElement="true"

6
votes

You can also put the statement into the project-level or global gradle.properties file

systemProp.apple.awt.UIElement=true