¿Por qué mi icono de código de control de lanzar un NullPointerException?
-
19-09-2019 - |
Pregunta
He añadido una imagen para mi botón,pero al ejecutar el marco de esta excepción será lanzada .por qué?por favor me ayude.
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)
la línea 138:
public ImageIcon (URL location) {
this(location, location.toExternalForm());
}
line91:
jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N
Yo uso este pobre comprobación (Peter Lang recomendado)que es:el Sistema.a cabo.println(getClass().getResource("/Images/yahoo_1.gif"));y devuelve null, ¿por qué?por favor me ayude.
Solución
Esto significa, que los rendimientos getClass().getResource("/Images/yahoo_1.gif")
null
.
JavaDoc afirma que esto ocurre si
el recurso no se ha encontrado o el invocador no tiene privilegios suficientes para obtener el recurso.
-
comprobar si realmente
getResource
vuelvenull
:
System.out.println(getClass().getResource("/Images/yahoo_1.gif"));
-
Asegúrese de que la ruta es correcta y que está en la ruta de clases.
Editar
Sólo traté con NetBeans. He creado la siguiente estructura
Source Packages
Images
yahoo_1.gif
y su código funcionaba bien. Esta es su estructura?
Trate de hacer clic derecho en su aplicación y seleccione Clean and Build
.
Otros consejos
Con el fin de solucionar este problema, las imágenes deben copiarse en el bin directorio -. No en src directorio
De lo contrario obtendrá nulo todo el tiempo en getClass (). GetResource ( "image.png") . El camino es no es nulo y se puede establecer que el anterior -. Sólo si copia las imágenes que usted necesita dentro del directorio binario, donde se encuentran los archivos .class para su proyecto
Esto fija el problema. Déjeme saber si he ayudado en esto.
Ioana
Parece que vuelve getClass().getResource("/Images/yahoo_1.gif")
null
es decir, el .gif no se puede encontrar en la ruta de clases. (Imágenes en comparación con las imágenes tal vez?)
La dirección URL que se pasa es nulo de esta línea:
getClass().getResource("/Images/yahoo_1.gif")
A partir de la documentación del JDK:
[getResource(..) devuelve] UN objeto URL para leer el recurso, o null si el recurso no podía ser o el invocador no tiene privilegios adecuados para obtener la de recursos
Tal vez quisiste ("Images/yahoo_1.gif") - es decir,ruta de acceso relativa, no absoluta?
Yo tenía el mismo problema.Lo que funcionó para mí fue:
- Buscar en el archivo jar o en la carpeta bin(el uno con el .los archivos de clase) y ver la ruta de la imagen.
- Elemento de la lista
private class HandlerClass implements ActionListener{
public void actionperformed(ActionEvent event){
JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
}
}