Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    31

    Eccezione a runtime java.lang.NullPointerException

    Salve a tutti, ho provato a creare un file .jar eseguibile con il mio progetto, ma quando provo ad avviarlo non succede niente. Eseguendolo da prompt dei comandi mi dà questo errore:

    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException        at javax.swing.ImageIcon.<init>(Unknown Source)
            at Progetto.initComponents(Progetto.java:253)
            at Progetto.<init>(Progetto.java:39)
            at Progetto$38.run(Progetto.java:2695)
            at java.awt.event.InvocationEvent.dispatch(Unknown Source)
            at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
            at java.awt.EventQueue.access$500(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    Davvero non capisco! Ho creato un altro progetto con interfaccia grafica (anche se molto più semplice, una sola finestra) e si avvia tranquillamente. Forse il problema è dovuto al fatto che l'avvio prevede la comparsa di due finestre? (una di dialogo e il JFrame principale)?
    Però perchè a compile time funziona perfettamente?
    Qualche suggerimento?
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Naomi92 Visualizza il messaggio
    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at javax.swing.ImageIcon.<init>(Unknown Source)
            at Progetto.initComponents(Progetto.java:253)
    Tiro ad indovinare? (nemmeno tanto a caso ....) A ImageIcon passi un URL ottenuto da una "risorsa" ma per qualche motivo o non è corretta la specifica della risorsa oppure la risorsa fisicamente non esiste affatto (per altri motivi).
    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
    Registrato dal
    Apr 2015
    Messaggi
    31
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Tiro ad indovinare? (nemmeno tanto a caso ....) A ImageIcon passi un URL ottenuto da una "risorsa" ma per qualche motivo o non è corretta la specifica della risorsa oppure la risorsa fisicamente non esiste affatto (per altri motivi).
    Hai ragione, c'era un errore sul nome dell'icona (iniziale maiuscola invece che minuscola) e in NetBeans funzionava, a runtime no... il problema è che risolto questo errore, adesso mi dà quest'altro:
    codice:
    Uncaught error fetching image:java.lang.NullPointerException
            at sun.awt.image.URLImageSource.getConnection(Unknown Source)
            at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
            at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
            at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
            at sun.awt.image.ImageFetcher.run(Unknown Source)


    PS: le icone si trovano tutte nella cartella /src del progetto (e, dopo il building, in /build/classes)
    Ultima modifica di Naomi92; 12-05-2015 a 21:12

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Naomi92 Visualizza il messaggio
    adesso mi dà quest'altro:
    codice:
    Uncaught error fetching image:java.lang.NullPointerException
            at sun.awt.image.URLImageSource.getConnection(Unknown Source)
    Senza vedere almeno un pezzo di codice, ne so meno di prima ....
    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
    Registrato dal
    Apr 2015
    Messaggi
    31
    Di cosa hai bisogno esattamente?
    Ad esempio, la parte di codice per il setting dell'icona (le icone sono le uniche immagini nel progetto) è tipo questo
    codice:
    avantiBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Arrow right-icon.png")));
    oppure così:
    codice:
    status.setIcon(new ImageIcon("/Error-icon.png"));

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Naomi92 Visualizza il messaggio
    codice:
    avantiBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Arrow right-icon.png")));
    Innanzitutto evita (meglio evitare ...) gli spazi nei nomi delle risorse. Poi comunque la specifica inizia per '/' e questo vuol dire che Arrow right-icon.png viene cercato lungo il classpath alla "radice" (non conta il Class usato per getResource).
    Se alla fine hai un .jar, vuol dire che Arrow right-icon.png deve stare alla radice del jar.

    (il fatto che sia alla radice, non è molto buono in generale, sarebbe meglio sfruttare i package)

    Quote Originariamente inviata da Naomi92 Visualizza il messaggio
    oppure così:
    codice:
    status.setIcon(new ImageIcon("/Error-icon.png"));
    Questa non è per niente buona. Non è una "risorsa" (come intesa dai getResource/getResourceAsStream) ma è la specifica di un file direttamente sul file-system (quindi non può essere dentro un jar!). E oltretutto è alla radice del file-system.
    Evita.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    31
    Allora ho fatto in modo che tutte le icone fossero settate nel primo modo e adesso funziona, finalmente.
    Grazie dei consigli! Ho corretto il nome dell'icona, ma comunque come mi consiglieresti di fare per avere una situazione più "pulita" con questi files? Non sono praticissima, è da poco che mi cimento in queste cose, mi devi scusare

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Naomi92 Visualizza il messaggio
    come mi consiglieresti di fare per avere una situazione più "pulita" con questi files?
    Una cosa semplice e abbastanza pulita è avere un package x.y.z.resource (x.y.z quello che vuoi) in cui metti i file delle "risorse" e poi anche una classe es. ResourceFactory del tipo:

    codice:
    package x.y.z.resource;
    
    // ...import...
    
    public class ResourceFactory {
        public static final String ARROW_RIGHT_ICON = "arrow-right-icon.png";
        // .....
    
        private ResourceFactory() {}
    
        public static ImageIcon getImageIcon(String name) {
            return new ImageIcon(ResourceFactory.class.getResource(name));
        }
    }

    Poi da qualunque parte es.

    codice:
    ImageIcon ico = ResourceFactory.getImageIcon(ResourceFactory.ARROW_RIGHT_ICON);
    Ultima modifica di andbin; 13-05-2015 a 09:04
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    31
    d'accordo grazie

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 © 2026 vBulletin Solutions, Inc. All rights reserved.