Java - Relative Path dentro JAR

   
Vista:

Relative Path dentro JAR

Publicado por Xavier (12 intervenciones) el 09/11/2015 16:15:23
Saludos!
Estoy en medio de un proyecto, en el que tengo un archivo properties dentro de un package, el mismo package que contiene la Main.
El problema viene en que tengo que poder consultar y sobretodo MODIFICAR el archivo mediante el codigo.
He probado de diferentes maneras y colores, pero solamente funciona bien dentro del netbeans, el hecho de poner una ruta relativa. Mediante InputStream y OutputStream logro consultar y modificar sus datos.
El problema viene al salir de netbeans...la ruta relativa no me sirve... y tampoco quiero poner una absoluta, ya que este proyecto ira en distintos sistemas operativos y pcs, y debe funcionar siempre igual.

Espero que haya quedado clara mi duda.
Gracias de antemano !!!

PD: Se me ha pasado por la cabeza el hecho de crear un archivo temporal, pero preferiria no tener que crear archivos temporales....
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
Imágen de perfil de Lawliet

Relative Path dentro JAR

Publicado por Lawliet (238 intervenciones) el 09/11/2015 17:38:02
Hola...

Si tu archivo de properties se encuentra dentro del proyecto, difícilmente lo podrás cambiar desde el mismo proyecto, ya que cuando se empaqueta te crea un comprimido, por lo que tienes las siguientes opciones.

1.- Buscar una forma de abrir el comprimido que te crea al empaquetar el proyecto, de esa forma podrás si es que te lo permite, modificar tu properties con el mismo proyecto; es decir, el archivo .JAR.
2.- Usar un properties externo, de esa manera podrás crearlo y modificarlo a tus necesidades.

En lo personal, te recomiendo la segunda opción ya que yo eh trabajo con estos tipos de archivos externos y me ah funcionado bien hasta el momento, además de que ta la oportunidad de modificarlo manualmente sin necesidad de tener que abrir tu proyecto para poder modificarlo.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
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

Relative Path dentro JAR

Publicado por Xavier (12 intervenciones) el 09/11/2015 17:48:07
Muchas gracias por la respuesta!

Como he comentado esta aplicación debe ser 100% portable, asi que preferiria poder abrir el jar para modificar el properties y luego cerrarlo... Alguna idea de como hacerlo ? He visto las clases java.util.zip y java.util.jar, pero la verdad es que nunca las he usado, y en la red no he encontrado ningún ejemplo de lo que busco...

Merci de nuevo!
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
Imágen de perfil de Lawliet

Relative Path dentro JAR

Publicado por Lawliet (238 intervenciones) el 09/11/2015 19:34:08
De hecho como piensas ejecutar tu aplicación, puedes hacer que esta misma recupere la ruta donde se esta ejecutando y como tendrás el archivo de propiedades al mismo nivel donde se ejecuta tu aplicación solo es cuestión de hacer referencia al archivo. Supongamos que tienes lo siguiente.

Captura

Con este código puedes recuperar la ruta donde se ejecuto tu proyecto.

1
String path = CanBrasilConfiguracion.class.getProtectionDomain().getCodeSource().getLocation().getPath().toString();

Esto te retornara la siguiente salida.

1
/C:/bimbo-SIV/entradas/brasil/Proyecto.jar

Por lo que solo es cuestión de remplazar el nombre del proyecto por la ruta o archivo de propiedades; es decir.

1
/C:/bimbo-SIV/entradas/brasil/recursos/configuracion.properties

Que es la carpeta donde se encuentra mi archivo de propiedades.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
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

Relative Path dentro JAR

Publicado por Xavier (12 intervenciones) el 10/11/2015 11:41:08
Muchas gracias, pero lo que quiero es poder modificar el properties dentro del jar.
He estado avanzando y con un inputStream pude leer el properties con el jar ejecutandose. Pero no logro luego guardar los datos modificados del properties en el jar.
He entontrado la clase java.util.Jar, que igual me sirve.. peor no se usarla, y no he encontrado muchos ejemplos...
Cualquier ayuda sera bien recibida!
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