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.
- He importado la imagen haciendo clic con el botón derecho en el Proyecto - > Importar - > General/File System para la fuente de importación.
- Seleccionó la carpeta que contenía la imagen para importar
- Seleccionado "
Project/src/Viking/Test/Resources
" para el parámetro 'Into folder' - 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 ) { }
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 .
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