Perché la mia icona di codice per la gestione gettare un NullPointerException?
-
19-09-2019 - |
Domanda
Ho aggiunto un'immagine per il mio pulsante,ma quando ho eseguito questo frame questa eccezione viene generata .perché?si prega di aiutare me.
init:
deps-jar:
compile-single:
run-single:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
at ClientGUI.IdAndPasswordFrame.initComponents(IdAndPasswordFrame.java:91)
at ClientGUI.IdAndPasswordFrame.<init>(IdAndPasswordFrame.java:22)
at ClientGUI.IdAndPasswordFrame$4.run(IdAndPasswordFrame.java:200)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 1 second)
linea 138:
public ImageIcon (URL location) {
this(location, location.toExternalForm());
}
line91:
jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N
Io uso questa povera di controllo (Peter Lang raccomandato)che di Sistema.out.println(getClass().getResource("/Images/yahoo_1.gif"));e restituisce null,perché?si prega di aiutare me.
Soluzione
Questo significa, che i rendimenti getClass().getResource("/Images/yahoo_1.gif")
null
.
JavaDoc afferma che questo accade se
la risorsa non poteva essere trovato o l'invoca non dispone di privilegi sufficienti per ottenere la risorsa.
-
controllare se
getResource
torna davveronull
:
System.out.println(getClass().getResource("/Images/yahoo_1.gif"));
-
Assicurarsi che il percorso sia corretto e che è nel classpath.
Modifica :
Ho appena provato con NetBeans. Ho creato la seguente struttura
Source Packages
Images
yahoo_1.gif
e il tuo codice ha funzionato bene. Questa è la tua struttura?
Prova a fare clic destro sulla vostra applicazione e selezionare Clean and Build
.
Altri suggerimenti
Per risolvere questo problema, le immagini devono essere copiati nella bin directory -. Non in src directory
In caso contrario si otterrà nulla tutto il tempo su getClass (). GetResource ( "image.png") . Il percorso è non nullo ed è possibile impostarla come sopra -. Solo se si copiano le immagini che è necessario all'interno della directory binario, in cui si trovano i file .class per il progetto
Questo risolto il problema. Fatemi sapere se mi ha aiutato in questo.
Ioana
Sembra che getClass().getResource("/Images/yahoo_1.gif")
rendimenti null
vale a dire il .gif non può essere trovato sul classpath. (Immagini contro le immagini forse?)
L'URL viene passata in è nulla da questa linea:
getClass().getResource("/Images/yahoo_1.gif")
Dalla documentazione JDK:
[getResource (..) restituisce] Un oggetto URL per la lettura della risorsa, oppure null se la risorsa non poteva essere trovati o l'invoca non ha privilegi sufficienti per ottenere il risorsa
Forse volevi dire ( "Images / yahoo_1.gif") - vale a dire il percorso relativo non assoluto
Ho avuto lo stesso problema.Che cosa ha funzionato per me è stato:
- Guardare il file jar o nella cartella bin(quello con .i file di classe) e vedere il percorso dell'immagine.
- Voce di elenco
private class HandlerClass implements ActionListener{
public void actionperformed(ActionEvent event){
JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
}
}