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