java eclipse image jar embedded-resource

java - Eclipse exportó Runnable JAR que no muestra imágenes



image embedded-resource (8)

Mis imágenes no se cargarán cuando ejecute 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 se exportan bien.

He intentado:

label.setIcon(new ImageIcon(MainFrame.class.getResource("/resources/header.jpg")));

También he intentado:

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?


A menos que tenga que tener sus archivos en el archivo jar, esta es probablemente la forma más sencilla de hacerlo:

header = ImageIO.read(new File("./resources/header.jpeg"));

El encabezado debe ser una imagen / imagen almacenada. Esto va a la carpeta en la que se encuentra el jar ejecutable y busca una carpeta llamada recursos. http://i.stack.imgur.com/x8xtO.png


Descubrí que cuando cambiaste:

Empaquete las bibliotecas requeridas en el jar generado

a

Extraiga las bibliotecas necesarias en el jar generado

en la configuración de Configuración de inicio funcionó para mí.


Dos pasos simples:

1 - Agregue la carpeta a Build Path;

2 - Use esto:

InputStream url = this.getClass().getResourceAsStream("/load04.gif"); myImageView.setImage(new Image(url));


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 ...


Funciona bien para mi. Comprueba lo que puedes tener diferente.

Ejemplo 1: (recursos en src)

Pasos:

  1. Estructura de archivo

  2. Código

    package com..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/.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); } }); } }

  3. [Haga clic derecho en el proyecto] → [Exportar] → [Archivo Jar ejecutable] → [Configurar configuración de inicio]

  4. Lucro

FYI, la misma configuración se ejecuta en eclipse muy bien también

Ejemplo 2: (recursos no en src, sino en proyecto)

Pasos:

  1. Estructura del archivo (los recursos de notificación se ven como una carpeta simple)

  2. Lo que tenemos que hacer ahora es poner los recursos en la ruta de compilación. Lo que esto hace es poner todo en la carpeta (excluyendo la carpeta en sí) en el classpath

    • Haga clic derecho en el proyecto y vaya a [Ruta de compilación] → [Configurar ruta de compilación]

    • 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 compilación (observe el pequeño paquete en la carpeta ahora

  3. El nuevo código ya no usa el prefijo de recursos para la ruta

    URL url = Main.class.getResource("/.png");

  4. ¡Igual que los pasos 3 y 4 de arriba, y obtenga ganancias!

ACTUALIZAR

Configurar la configuración de inicio

Generalmente, una vez que ejecuta la clase (es decir, haga clic 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:

  1. [Proyecto de clic derecho] → [Propiedades] → [Configuración de ejecución / depuración]

    Puede ver que ya tengo una configuración de ejecución (que se establece implícitamente simplemente ejecutando la clase). Pero para crear uno nuevo, seleccione [Nuevo] → [Aplicación Java]

  2. Cree un nombre para ejecutar la configuración y explore o escriba una clase de inicio principal. En mi caso es la clase com..test.Main

  3. Ahora, cuando exporta como se muestra en el ejemplo anterior, selecciona la configuración de ejecución

  4. Ejecuta el frasco como arriba.

EDITAR

Resultado a verificar

Manifiesto:

Manifest-Version: 1.0 Rsrc-Class-Path: ./ Class-Path: . Rsrc-Main-Class: com..test.Main Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

Jarra extraída:


Otra solución es si coloca su archivo de recursos, y su archivo .jar en la misma ubicación, debería funcionar. El único inconveniente es que debe tener los recursos con el archivo jar en todo momento.

Si eso no es un problema, puede hacerlo de esta manera.


Para crear un archivo JAR ejecutable desde Eclipse, podemos referirnos al artículo "Crear frascos 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

  1. Asegúrese de crear un paquete para nuestro código, no solo crear un proyecto en Eclipse
  2. Cree el subpaquete (subcarpeta) para nuestros archivos de recursos bajo el paquete principal de nuestro código (tenga en cuenta que el subpaquete está bajo el paquete principal, no solo está en el proyecto)
  3. obtener todas las referencias de archivo de getResource () (obtener la referencia de URL)
  4. Exportación de archivos como JAR ejecutable en Eclipse (Archivo -> Exportar ... -> seleccione Archivos JAR ejecutables -> siguiente -> ...)

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 la imagen SWT de la URL o cómo convertir ImageIcon a la imagen SWT, 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(); }


Tengo el mismo problema ... Puedes usar esto ...

Image Icon= new ImageIcon(new WE4().getClass().getResource("IC.jpg"))

Aquí WE4 es el nombre de mi constructor de clase. Espero eso ayude.