Un programma pure-Java su Mac OS X soffre di diversi problemi di integrazione con il resto del sistema.
Per ovviare almeno in parte al problema ho fatto uso del package com.apple.

Ora, tutto il codice non portabile è rinchiuso in un if il cui contenuto viene eseguito solo se ci si trova su Mac OS X.

codice:
if (OS.isMacOSX()) {
            com.apple.eawt.Application application = com.apple.eawt.Application.getApplication();

            application.addAboutMenuItem();
            application.setEnabledAboutMenu(true);

            application.addApplicationListener(new com.apple.eawt.ApplicationAdapter() {
                @Override
                public void handleAbout(com.apple.eawt.ApplicationEvent e) {
                    aboutDialog.setVisible(true);
                    e.setHandled(true);
                }

                @Override
                public void handleQuit(com.apple.eawt.ApplicationEvent e) {
                    actionExit();
                }

                @Override
                public void handleReOpenApplication(com.apple.eawt.ApplicationEvent arg0) {
                    minimizeWindowMenuItem.setEnabled(true);
                    zoomWindowMenuItem.setEnabled(true);

                    setMenuEnabled(true);
                    setVisible(true);
                }
            });
}
Ora, perchè mandando in esecuzione il programma su Linux o su Windows il programma non parte (ClassLoaderError o qualcosa di simile)?
Essendo java interpretato, quel codice non dovrebbe mai essere raggiunto su Linux! Centra forse il compilatore Just-In-Time?

Grazie