2010-02-16 15 views
13

Hice una aplicación java.y incluí todas las clases en el archivo jar..wen ejecuto el proyecto desde netbeans mi aplicación se ejecuta correctamente ... pero si coloco mi archivo .jar en otro lugar y correr desde allí ... no obtengo los iconos usados ​​por mi aplicación ... En el código obtengo mis íconos del directorio de imágenes presentes en la carpeta del proyecto.Cómo agrupar imágenes en el archivo jar

Ahora, yo quería saber cómo podemos presentar estos archivos de imagen para el usuario final (como se presentan archivo .jar) .thanks de antemano

+0

Mira mi respuesta aquí [Para la adición de imágenes e iconos en archivos JAR] (http://stackoverflow.com/a/42084902/7199218) en el columpio componentes. –

Respuesta

29

Parece que hay dos preguntas aquí:

  1. ¿Cómo hago para que NetBeans incluya un archivo de imagen en el contenedor producido cuando construyo mi proyecto?

  2. ¿Cómo accedo a un archivo de imagen desde un contenedor?

Esta respuesta se aplica a NetBeans 6.8 y se dirige a las dos preguntas.

Supongamos que tiene un Proyecto de aplicación Java basado en hormigas.

Aquí está la vista 'Archivos' del proyecto

JP 
+ images 
    + test.jpg 
+ nbproject 
+ src 
    + jp 
    + Main.java 
+ test 
+ build.xml 
+ manifest.mf 

Dentro de su Main.java usted tiene un código como éste:

public static void main(String[] args) throws IOException { 
    // find the file in the file system.. probably not a good idea 
    File f = new File("images/test.jpg"); 
    System.out.println(f.getCanonicalPath()+" "+f.exists()); 

Al ejecutar este proyecto desde el interior de NB se obtiene este salida:

/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true 

Cuando se ejecuta el código en el frasco lleno, se obtiene algo como esto:

bash-3.2$ pwd 
/export/home/vkraemer/nbhg/web-main 
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar 
/export/home/vkraemer/nbhg/web-main/images/test.txt false 

para conseguir algo mejor cuando se ejecuta el frasco, que tiene que hacer lo siguiente:

Añadir el directorio de imágenes como una raíz de origen para su proyecto.

Haga clic con el botón derecho en el proyecto y seleccione el elemento Propiedades. Aparecerá un cuadro de diálogo.

Seleccione 'Fuentes' en la lista que se encuentra en el lado izquierdo del cuadro de diálogo. Esto cambiará el contenido del panel en el lado derecho del diálogo.

Presione el botón 'Agregar carpeta ...' que aparece junto a la tabla 'Carpetas de paquetes de origen'. Aparecerá un FileChooser.

Utilice este selector para seleccionar la carpeta de imágenes y presione el botón OK. Se agregará una entrada para la carpeta de imágenes.

Utilice el botón Aceptar en el cuadro de diálogo Propiedades del proyecto para aceptar los cambios y cerrar el cuadro de diálogo.

Cambie su código para usar Class.getResource().

public static void main(String[] args) throws IOException { 
    // find the file in the file system.. probably not a good idea 
    File f = new File("images/test.jpg"); 
    System.out.println(f.getCanonicalPath()+" "+f.exists()); 
    URL url = Main.class.getResource("/test.jpg"); 
    System.out.println(url); 

Al ejecutar el proyecto desde dentro del IDE, debería ver algo como esto:

/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true 
file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg 

Cuando se ejecuta el código de lleno en el frasco, se llega algo como esto:

bash-3.2$ pwd 
/export/home/vkraemer/nbhg/web-main 
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar 
/export/home/vkraemer/nbhg/web-main/images/test.jpg false 
jar:file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar!/test.jpg 

Después de obtener la dirección del archivo test.jpg, puede utilizar ImageIcon(URL) para crear el icono

+1

Muchas gracias. Estaba teniendo un problema similar al hacer referencia a los recursos de imagen del contenedor de la aplicación Java .exe. Con su solución, sin embargo, todo funciona a la perfección. – Gabriel

+0

¡Usted, señor, es un genio! – Valdrinit

3

Para un Proyecto Maven en NetBeans 6.9, coloque su archivo en Recursos en la carpeta "Otras fuentes" del Proyecto.

Y asegúrese de que no se olvide el líder "/"

Cuestiones relacionadas