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.
Ora, perchè mandando in esecuzione il programma su Linux o su Windows il programma non parte (ClassLoaderError o qualcosa di simile)?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); } }); }
Essendo java interpretato, quel codice non dovrebbe mai essere raggiunto su Linux! Centra forse il compilatore Just-In-Time?
Grazie![]()

Rispondi quotando
