25 junio 2013

Como localizar un recurso dentro de un jar

Supongamos que necesitamos localizar un fichero dentro de un jar de Java, como por ejemplo un fichero de configuración XML. Si programamos con Eclipse, situamos los ficheros de recursos dentro de src/main/resources y/o src/test/resources, en el caso en que estemos haciendo tests de métodos de nuestra aplicación. Posteriormente, una vez que tenemos creada la aplicación, podemos empaquetarla en un fichero .jar para distribuirla. En Eclipse, podemos utilizar la opción "Export...">"Java">"Runnable JAR file"

La pregunta es: cómo puedo cargar un fichero de configuración que hemos guardado en dicho JAR?

La respuesta me ha costado encontrarla y de ahí esta entrada en el blog. Cuando tenemos un fichero "configuracion.xml" en la ruta src/main/resources/configuracion.xml, al empaquetarlo en un jar, Eclipse lo coloca en la carpeta resources, que cuelga de la raíz del jar. Es decir, que para recuperar el fichero de configuración, hemos de hacer lo siguiente:

InputStream is = this.getClass().getResourceAsStream("/resources/configuracion.xml");

Con ésto tenemos ya el fichero en un InputStream y ya podemos tratarlo.

No hay comentarios: