Incrustar recursos (imágenes, bits de sonido, etc.) en un proyecto Java y luego usar esos recursos


He buscado un método para incrustar un recurso en un proyecto java (usando Eclipse v3.6.0) y luego usar ese recurso incrustado dentro de un control (por ejemplo, JLabel). He visto métodos para hacer referencia a los recursos del sistema de archivos. Una vez desarrollado el proyecto me gustaría publicar la aplicación como ejecutable. Debe tenerse en cuenta que estos ejecutables se implementarán/lanzarán a las plataformas Windows, *NIX y Linux.

Sé que esto se puede hacer en el mundo de Visual Studio, pero no estoy muy familiarizado con cómo hacer esto en Java / Eclipse IDE. Como una pregunta adicional, ¿cómo puedo hacer que Eclipse cree el proyecto como un ejecutable para que pueda ser lanzado?

Cualquier ayuda es muy apreciada.

Mark

ACTUALIZAR 1:

Basado en la respuesta de BalusC, quería compartir el código que tengo para resolver mi problema. Mis clases están bajo el paquete de " Viking.Test" y luego coloqué el archivo de imagen bajo el paquete "Viking.Test.Resources". Esto es todo hecho dentro de Eclipse para importar la imagen en el proyecto.

  1. He importado la imagen haciendo clic con el botón derecho en el Proyecto - > Importar - > General/File System para la fuente de importación.
  2. Seleccionó la carpeta que contenía la imagen para importar
  3. Seleccionado "Project/src/Viking/Test/Resources " para el parámetro 'Into folder'
  4. No cambió ninguna de las opciones y hizo clic en "Terminado"

En el archivo fuente agregué el siguiente código para insertar el imagen en una JLabel (LblLogo)

try
{
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  InputStream input = classLoader.getResourceAsStream(
    "Viking/Test/Resources/MyImage.jpg");
  Image logo = ImageIO.read(input);
  LblLogo = new JLabel( new ImageIcon( logo ) );
  LblLogo.setBounds(20, 11, 210, 93);
  getContentPane().add(LblLogo);
}
catch ( IOException e ) {  }
Author: Community, 2010-09-16

1 answers

Simplemente coloque esos recursos en la estructura de origen/paquete y use ClassLoader#getResource() o getResourceAsStream() para obtenerlos como URL o InputStream del classpath por la ruta completa del paquete calificado.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/image.gif");
// ...

O si está en el mismo paquete que la clase actual, también puede obtenerlo de la siguiente manera:

InputStream input = getClass().getResourceAsStream("image.gif");

Como pregunta secundaria, ¿cómo consigo que Eclipse cree el proyecto como un ejecutable para que pueda ser lanzado?

Haga clic derecho en Proyecto Java > Exportar > Archivo JAR ejecutable .

 17
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-15 20:57:57