Java OS X Lion Set application name doesn't work

Using JDK8, you can set the apple.awt.application.name property to affect the Application menu name.

However, Martijn Courteaux’s warning still applies: you must do this before any AWT classes are loaded. And AWT classes will be loaded before your main() method runs if it lives in a subclass of JFrame.

Reference:

http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/5c1d06cd7d7b/src/macosx/native/sun/osxapp/NSApplicationAWT.m#l157


Apparently, you can do it adding the following when you add the following options to the command line:

-Xdock:name="Alessio"

While com.apple.mrj.application.apple.menu.about.name is the right property name, I think you'll be setting it too late. Have you tried it on the command line as:

-Dcom.apple.mrj.application.apple.menu.about.name=Alessio

For more information about writing Java Apps for OS X: http://www.oracle.com/technetwork/articles/javase/javatomac-140486.html

It may also be worth looking at something like this: http://launch4j.sourceforge.net/


I'm not sure if this also works for OS X Lion, but I'm on Mountain Lion.

After some testing, my conclusion is that you can use the old approach if and only if you don't do anything with

  • java.awt.Toolkit
  • Setting look and feel

before setting the app name.

Some things that use Toolkit are: (Feel free to edit this answer and add items)

  • Loading a java.awt.Font (@see static initializer of Font)
  • Acquiring the Screen resolution.
  • Loading a class that extends JFrame (such as if the class contains your main method)

Tags:

Java

Macos

Swing