Mis imágenes no se cargarán al ejecutar un archivo JAR exportado desde Eclipse.
Tengo las imágenes en un paquete de clase de recursos. También probé una carpeta de origen de imágenes sin suerte.
Funciona perfectamente cuando se carga desde Eclipse. Las imágenes están en el archivo JAR exportado, por lo que están exportando bien.
He intentado:
label.setIcon(new ImageIcon(MainFrame.class.getResource("/resources/header.jpg")));
También lo intenté:
URL url = getClass().getResource("/resources/header.jpg"); Image image = Toolkit.getDefaultToolkit().getImage(url); label.setIcon(new ImageIcon(image));
Y:
try { label.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("/resources/header.jpg")))); } catch (IOException e1) { e1.printStackTrace(); }
¿Alguna sugerencia?
Funciona bien para mí Compruebe lo que puede tener diferente.
Pasos:
Estructura de archivo
Código
package com.stackoverflow.test; import java.net.URL; import javax.swing.*; // Wild carded for brevity. // Actual code imports single classes public class Main { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable(){ public void run() { URL url = Main.class.getResource( "/resources/stackoverflow.png"); ImageIcon icon = new ImageIcon(url); JFrame frame = new JFrame(); frame.add(new JLabel(icon)); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
[Haga clic con el botón derecho en el proyecto] → [Exportar] → [Archivo de jar ejecutable] → [Configurar config de inicio]
Lucro
FYI, la misma configuración se ejecuta en eclipse muy bien también
Pasos:
Estructura de archivos (los recursos de notificación se ven como una carpeta simple)
Lo que tenemos que hacer ahora es poner los recursos en la ruta de comstackción. Lo que hace es poner todo en la carpeta (excluyendo la carpeta misma) en el classpath
Haga clic derecho en el proyecto y vaya a [Build Path] → [Configure Build Path]
Desde la pestaña [Fuentes] en el cuadro de diálogo, seleccione [Agregar carpeta] y en el nuevo cuadro de diálogo, seleccione la carpeta [recursos]
Ahora el contenido de la carpeta de recursos está en la ruta de comstackción (observe el pequeño paquete en la carpeta ahora
El nuevo código ya no usa el prefijo de recursos para la ruta
URL url = Main.class.getResource("/stackoverflow.png");
¡Igual que los pasos 3 y 4 de arriba, y ganancias!
ACTUALIZAR
Generalmente, una vez que ejecuta la clase (es decir, haga clic con el botón derecho en la clase y Ejecutar como aplicación Java), se configurará una configuración de ejecución. Necesitará esto para establecer como punto de inicio en el manifiesto. Pero aquí está cómo hacerlo manualmente.
Pasos:
[Proyecto de clic derecho] → [Propiedades] → [Configuración de ejecución / depuración]
Puedes ver que ya tengo una configuración de ejecución (implícitamente configurada simplemente para ejecutar la clase). Pero para crear uno nuevo, seleccione [Nuevo] → [Aplicación Java]
Cree un nombre para la configuración de ejecución y explore o escriba una clase de lanzamiento principal. En mi caso es la clase com.stackoverflow.test.Main
Ahora cuando exporta como se muestra en el ejemplo anterior, selecciona la configuración de ejecución
Ejecute el jar como arriba.
EDITAR
Manifiesto:
Manifest-Version: 1.0 Rsrc-Class-Path: ./ Class-Path: . Rsrc-Main-Class: com.stackoverflow.test.Main Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
Frasco extraído:
Encontré eso cuando cambiaste:
El paquete requiere bibliotecas en el contenedor generado
a
Extraiga las bibliotecas necesarias en el contenedor generado
en la configuración Configurar inicio, funcionó para mí.
Para crear un archivo JAR ejecutable desde Eclipse, podemos consultar el artículo “Creación de tarros ejecutables en Eclipse (u otro IDE … o a mano):” ( https://www.cefns.nau.edu/~edo/Classes /CS477_WWW/Docs/RunnableJarsinEclipse.html ), mencionó que necesitamos hacer cuatro cosas como
Pero para el archivo de imagen en el código de ejemplo del artículo anterior solo crea ImageIcon, no crea la Imagen SWT, y hay muchas preguntas en Internet sobre cómo obtener SWT Image desde URL o cómo convertir ImageIcon a SWT Image, a continuación se muestra el código de ejemplo para obtener la Imagen SWT de la URL,
Image imgSWT=null; // Image class is the SWT Image class ImageDescriptor imgDesc=null; java.net.URL imgURL = YourClassName.class.getResource("path/image_filename"); if (imgURL != null) { imgDesc = ImageDescriptor.createFromURL(imgURL); imgSWT = imgDesc.createImage(); }
El problema era que tenía este proyecto en mi perfil de Windows … que tenía un “!” en él … (¡DeNitE! -> era el nombre de mi perfil de Windows)
Tan pronto como lo cambié a DeNitE (¡sin el!) Funcionó bien …
Otro trabajo alternativo es si pones tu archivo de recursos, un archivo .jar en la misma ubicación, debería funcionar. El único inconveniente es que debe tener los recursos con el archivo jar todo el tiempo.
Si eso no es un problema, puedes hacerlo de esta manera.
Tengo el mismo problema … Puedes usar esto …
Image Icon= new ImageIcon(new WE4().getClass().getResource("IC.jpg"))
Aquí WE4 es mi nombre de constructor de clase. Espero eso ayude.
A menos que tenga que tener sus archivos en el contenedor, esta es probablemente la forma más sencilla de hacerlo:
header = ImageIO.read(new File("./resources/header.jpeg"));
el encabezado tiene que ser una Imagen / Imagen Buffered. Esto va a la carpeta en la que se encuentra el archivo jar ejecutable y busca una carpeta llamada recursos. http://i.stack.imgur.com/x8xtO.png
Dos pasos simples:
1 – Agregue la carpeta a Build Path;
2 – Usa esto:
InputStream url = this.getClass().getResourceAsStream("/load04.gif"); myImageView.setImage(new Image(url));