Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Esecuzione condizionale

    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
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Esecuzione condizionale

    Originariamente inviato da Alex'87
    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?
    Centra il fatto che quelle classi (es. com.apple.eawt.Application) comunque sono referenziate nel bytecode generato!! Quindi quando la JVM carica la tua classe .... beh, vede che ci sono riferimenti a quelle classi e cerca di caricarle (e su Linux non le trova, appunto). Che poi quel codice, per via del test, non venga mai eseguito .... beh, è un'altra cosa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Esecuzione condizionale

    Originariamente inviato da andbin
    Centra il fatto che quelle classi (es. com.apple.eawt.Application) comunque sono referenziate nel bytecode generato!! Quindi quando la JVM carica la tua classe .... beh, vede che ci sono riferimenti a quelle classi e cerca di caricarle (e su Linux non le trova, appunto). Che poi quel codice, per via del test, non venga mai eseguito .... beh, è un'altra cosa.
    Ah ok 8(

    E non c'è modo di evitare il caricamento di alcune classi? Magari con qualche parametro alla virtual machine?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Esecuzione condizionale

    Originariamente inviato da Alex'87
    E non c'è modo di evitare il caricamento di alcune classi? Magari con qualche parametro alla virtual machine?
    Evitarlo no .... cosa c'è scritto nel bytecode .... la JVM lo carica/esegue.

    Puoi sfruttare il caricamente dinamico e la reflection.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: Re: Esecuzione condizionale

    Originariamente inviato da andbin
    Puoi sfruttare il caricamente dinamico e la reflection.
    :master:

    Ma alla fine non è solo uno scarica barile? Nel senso, la classe Application dovrò indicarla da qualche parte, no? E non sono al punto di partenza? :master:

    Magari ho detto una cavolata, non ho mai usato la reflection
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Chiedo scusa per l'off-topic... non ho mai capito cosa sono quelle istruzioni seguite dalla chiocciola @... qualcuno potrebbe chiarirmi un pò le idee?

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Dreamer89
    Chiedo scusa per l'off-topic... non ho mai capito cosa sono quelle istruzioni seguite dalla chiocciola @... qualcuno potrebbe chiarirmi un pò le idee?
    Intendi @Override? È un'annotazione, serve ad indicare che si sta facendo l'override del metodo che segue. In questo modo, se si sbaglia a scrivere i paramentri (ad esempio) il compilatore ti avverte

    Oltre ad @Override ci sono molte altre annotazioni
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.