Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Buscar archivos en el JAR de la aplicación

Buenas:

En una aplicación de escritorio Java SE, tengo una clase que comprueba el estado de la base de datos (Derby) y, si no existe, crea el directorio en su sitio y las tablas. Como haré actualizaciones, quiero que pueda comprobar si el modelo de la base de datos corresponde a la versión de la aplicación y, en caso contrario, actualizarlo.

Para ello, en el propio JAR incluyo un script SQL para la versión inicial y otro por cada actualización publicada. Ya tengo el código para leer el script SQL y procesarlo (honestamente, está fuertemente inspirado en la solución de peyrona en su TapasTPV). :-) pero el script SQL se lee así:


InputStream is = getClass().getResourceAsStream("../model/jpa/script.sql");

Y mi idea es tener varios, como script-0.0.a1.sql, script-0.0.a2.sql, script.0.1.0.sql, script 1.0.0.sql, etc. Necesitaría poder hacer una búsqueda de todos los archivos "script.*.sql", pero no veo que eso sea posible.

He encontrado un artículo sobre cómo leer un JAR y buscar de esa forma [1], pero ahí el problema es el contrario, cómo saber dónde está y cómo se llama el JAR que estoy ejecutando. ¿Hay alguna forma de obtener una referencia al JAR con el que estoy ejecutando el propio código, o de encontrar lo que contiene usando algún método "primo" de getResource()?

Gracias por anticipado.

[1] http://www.m0interactive.com/archives/2009/04/29/how_to_get_the_list_of_files_in_a_directory_inside_a_jar_file.html

septiembre 3, 2014 | Registered Commenterrickiees

Puesto que sabes cuáles son los archivos y dónde están, cuando haces el build del jar, lo más sencillo es que crees un Map<String,String> donde las claves son nombres identificativos de los archivos, y los valores los nombres de los archivos.
Así puedes localizarlos en ejecución con facilidad.

septiembre 3, 2014 | Registered Commenterchoces

Gracias por la idea. Supongo que lo haré así, pero que me sugieras esa solución me indica que no debe de ser obvio lo que pretendo de bucear en el propio JAR en busca de archivos con patrón de nombre determinado, ¿verdad? :-)

septiembre 4, 2014 | Registered Commenterrickiees