Java - Crear Jar con archivos externos

 
Vista:
sin imagen de perfil

Crear Jar con archivos externos

Publicado por Doctor_Who (4 intervenciones) el 29/09/2016 11:16:06
Hola,

Estoy intentando crear un jar para mi programa JAVA, todo va genial hasta que se requiere ejeccutar o acceder a un archivo, sea de texto o de imagen.

Estos archivos los tengo en paquetes separados dentro de la misma carpeta src y en Eclipse el programa accede a ellos sin ningun problema y me carga el texto al pulsar un boton, sin embargo en el jar este no carga el texto porque no encuentra el archivo (cabe destacar que he abierto el jar y los archivos que necesito estan dentro). Lo mismo ocurre con imagenes y .exe.

En Eclipse me funciona con la siguiente ruta :
-ejecutarProceso("src/programas/setup.exe");
-cambiarIconoEstado("src/iconos/IcoUltraISO.png");

Ambos funcionan perfectamente en Eclipse pero nada de nada en el jar.

La ruta del jar es distinta a la de Eclipse (es igual solo que no hay carpeta src y todos los paquetes van en la raiz del jar por tanto la ruta

cambiarIconoEstado("iconos/IcoUltraISO.png");

Deberia funcionar, pero nada de nada.

Ya vi que es un problema muy común y que se soluciona dejando el jar junto a la carpeta SRC pero esto no me sirve ya que lo que quiero es generar un jar que lo ejecute todo sin tener los recursos en otra carpeta para luego pasarlo a un .exe.

¿Alguna solución?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Crear Jar con archivos externos

Publicado por YYanes (144 intervenciones) el 29/09/2016 21:19:27
Pruebe sacando los recursos de la carpera src y colocándolos fuera (tal y como estarían con el JAR), y por supuesto, podifíque el código suprimiendo el "src" de la ruta, y compílelo así en el Eclipse, para que al generar el JAR estés trabajando con la misma ruta que ya probaste en el IDE.

Ah, un consejo amigo: en cuanto pueda trate de cambiar de IDE, de Eclipse para Netbeans, éste último es mucho más flexible a la vez que robusto, además, ya cuenta con versiones muy avanzadas qu ele permitirán hacer casi cualquier cosa.

Un GigaSaludo y espero resuelva su problema!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear Jar con archivos externos

Publicado por Problema (4 intervenciones) el 03/10/2016 17:53:06
No es necesario eliminar la carpeta src ya que al generar el jar la carpeta src desaparece y el contenido queda en la raiz.

Teniendo en cuenta esto he conseguido solucionar el problema de las imagenes con el sigueinte codigo:


vista.getEstado().setIcon(new ImageIcon(this.getClass().getResource(ruta)));

De esta manera coje la ruta correcta tanto en Eclipse como en el jar, sin embargo el mismo metodo no funciona con los archivos de texto .txt

File f = new File(this.getClass().getResource(ruta).toString());

Probé a mostar por pantalla la ruta generada para el txt y es exactamente igual que la que genera los iconos sin embargo no es capaz de encontrar el archivo txt

ecc7b289532d0c7019b8fcffcf031a6bo

Cabe desctacar que efectivamente los iconos estan dentro de la carpeta iconos y el txt en la raiz de src y ambos se crean correctamente en el jar


¿Que ocurre?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear Jar con archivos externos

Publicado por Doctor_Who (4 intervenciones) el 03/10/2016 21:29:49
Por fin he podido solucionar lo de los ficheros de texto

Por lo que he podido encontrar al estar los archivos en el jar estos no son tan accesibles y es por eso que no se puede leer los archivos de esta forma:

File f = new File(this.getClass().getResource(ruta).toString());

Sino que hay que hacerlo de esta forma:

InputStream is = getClass().getResourceAsStream(ruta);
BufferedReader br = new BufferedReader(new InputStreamReader(is));


Para leer del archivo hay que utilizar el método readLine():

String linea;
while ((linea = br.readLine()) != null) {
lista.add(linea);
}



Sin embargo sigo teniendo problemas al intentar ejecutar un .exe desde dentro del jar:

Runtime.getRuntime().exec("/programas/PCTuneUp_919.exe");


¿Alguna idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear Jar con archivos externos

Publicado por nacho (1 intervención) el 31/08/2018 07:37:05
gracias compa me sirvio. ahora investigare porque que es lo importante.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar