2011-06-16 28 views
8

Hice una aplicación java e incluí todas las clases en un archivo jar. Cuando ejecuto el proyecto desde eclipse, mi aplicación se ejecuta correctamente. Pero cuando intento ejecutar mi archivo .jar, no obtengo los iconos que usa mi aplicación. En el código obtengo mis iconos del directorio de imágenes presentes en la carpeta del proyecto. ¿Cómo puedo presentar estos archivos de imágenes al usuario final cuando utilizo un frasco?Cómo incluir todas las imágenes en el archivo jar usando eclipse

Estoy cargando la imagen de este modo:

final public ImageIcon iReport=new ImageIcon("images/Report.png"); 

También he intentado

final public ImageIcon iquit=new ImageIcon(getClass().getResource("images/quit.png")); 

y

final public ImageIcon iquit=new ImageIcon(getClass().getResource("/images/quit.png")); 

Pero esto resulta en un error:

Exception in thread "main" java.lang.NullPointerException 
at javax.swing.ImageIcon.<init>(Unknown Source) 
+0

¿Nos muestra algún código? ¿Cómo los están cargando que funciona a veces pero no a otros? –

+0

Debe revisar cómo accede al recurso de imagen en su código. ¡Asegúrese de que sea accesible una URL relativa dentro del archivo jar! – gotomanners

+0

Puede echar un vistazo a class.getResourceAsStream() – McPepper

Respuesta

11

Debe obtenerlo desde classpath en lugar de desde el sistema de archivos del disco local.

Suponiendo que images es en realidad un paquete y que este paquete está dentro de la misma JAR que la clase actual, y luego hacerlo:

final public ImageIcon iReport = 
    new ImageIcon(getClass().getResource("/images/Report.png")); 
+0

Ya lo he hecho pero no funciona – sanu

+1

Entonces la ruta es completamente incorrecta. ¿Comprende cuándo necesita usar la barra inclinada '/'? ¿Entiendes cómo funcionan los caminos relativos? – BalusC

+0

Ok, gracias, lo entiendo ... pero ahora estoy obteniendo un problema diferente, todo funciona bien usando eclipse pero no funciona después de hacer jar ... en realidad el archivo jar no se está ejecutando. – sanu

2

Los archivos en los archivos JAR son tratados como "Recursos". necesita acceder a ellos como un recurso de ruta de clases, los métodos de acceso a archivos regulares no funcionan allí.

Prueba esto:

final public ImageIcon iReport = (new ImageIcon(getClass().getResource("images/Report.png"))); 
1

Sé que esto se le preguntó hace mucho tiempo, pero podría ayudar a otros con el mismo problema, como yo. Ya estaba usando getClass(). GetResource ("..."), pero el recurso no se exportó con el archivo .jar. He resuelto el problema actualizando la carpeta 'Recursos' y todas sus subcarpetas.

+0

Espero que esto [respuesta] (http://stackoverflow.com/a/ 9278270/1057230) definitivamente le ayudará :-) Más información se puede encontrar en esta [respuesta] (http://stackoverflow.com/a/9866659/1057230) –

+0

Muchas gracias. –

1

100% trabaja

final public ImageIcon iReport = new ImageIcon(getClass().getResource("/Report.png")); 

No se olvide de "/" al path para una imagen.

Cuestiones relacionadas