2012-01-15 11 views
11

Tengo un programa simple que necesita para mostrar imágenes. Sé cómo hacerlo ejecutando el código de Eclipse y sé cómo hacerlo ejecutando desde un archivo JAR, pero me gustaría una solución que funcione en ambos casos.Cargando ImageIcon de JAR o sistema de archivos

proyecto Eclipse es como tal:

- Project (java) 
    - src 
    - controller 
     - Main.java 
    - ui 
     - Display.java 
    - images 
    - image.jpg 

El fragmento de código que funciona desde dentro de Eclipse:

ImageIcon image = new ImageIcon("images/image.jpg); 

El que trabaja para una JAR (todo en un solo archivo JAR):

java.net.URL imgURL = getClass().getResource("/images/image.jpg"); 
ImageIcon image = new ImageIcon(imgURL); 

¿Qué necesitaría cambiar para obtener una sola pieza de código que funcione tanto en situati ons?

+0

¿Has probado el segundo intento en ambas situaciones? ¡eso podría responderle su propia pregunta (y ahorrarle el tiempo de tener que esperar respuestas aquí)! –

+2

¿Hola? ¿Este micrófono está encendido? –

+0

@Hovercraft lleno de anguilas. Sí, obviamente probé ambos fragmentos de código en ambos casos. – Martijn

Respuesta

9

colocar la carpeta images dentro de la carpeta src, y Eclipse copiará las imágenes en la carpeta de destino (bin o classes, en general), que se pondrá a disposición de la ruta de clases, al igual que si estuvieran en su frasco en el versión lanzada de su aplicación.

getResource() no se ve en un frasco. Se ve en el classpath del cargador de clases. Si la imagen está en un frasco o no, por lo tanto, no es importante. Debe estar en el classpath. Y, obviamente, la carpeta de destino de eclipse (bin o classes, en general) se encuentra en el classpath en tiempo de ejecución de la aplicación cuando la ejecuta desde Eclipse.

+0

¡Muchas gracias! Mover la carpeta 'images' dentro de' src' fue de hecho la solución. Mi segundo fragmento de código funcionó sin cambios tanto en Eclipse como cuando se ejecutó desde un Jar. – Martijn

Cuestiones relacionadas