Foros del Web » Programación para mayores de 30 ;) » Java »

como encontrar un archivo xml que esta dentro de un jar

Estas en el tema de como encontrar un archivo xml que esta dentro de un jar en el foro de Java en Foros del Web. Hola gente.. necesito una ayudita!!.. esta es mi situacion: tengo un proyecto creado en eclipse con varios paquetes y algunos archivos jar incluidos que necesito. ...
  #1 (permalink)  
Antiguo 28/11/2012, 12:34
Avatar de kikelp  
Fecha de Ingreso: marzo-2011
Mensajes: 26
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta como encontrar un archivo xml que esta dentro de un jar

Hola gente.. necesito una ayudita!!..

esta es mi situacion:

tengo un proyecto creado en eclipse con varios paquetes y algunos archivos jar incluidos que necesito.

bueno lo que hace este proyecto es cargar cuatros archivos xml ubicados en un paquete llamado configFiles y estos son levantados desde una clase ubicado en otro paquete, el asunto es que cuando ejecuto el proyecto desde la ide no tiene problemas en encontrar los archivos ya que lo estoy haciendo de la forma mas simple, usando caminos relativos, pero cuando creo un jar, y lo ejecuto este no los encuentra lo cual es razonable porq no tiene la ubicacion correcta de los archivos

he probado hacerlo con metodos como

this.getClass().getResource(res).getFile();

pero no funciona.. si alguien podria darme una mano? alguien le paso algo similar? como lo resolvieron?
  #2 (permalink)  
Antiguo 28/11/2012, 12:37
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 13 años
Puntos: 34
Respuesta: como encontrar un archivo xml que esta dentro de un jar

Puedes crear una carpeta en la raíz de tu proyecto (fuera del código fuente) y guardar tus archivos en ella.
Para obtener la ruta:
Código java:
Ver original
  1. String root = System.getproperty("user.dir");
ya solo concatenas el nombre de la carpeta y el archivo que buscas.
  #3 (permalink)  
Antiguo 28/11/2012, 13:32
Avatar de kikelp  
Fecha de Ingreso: marzo-2011
Mensajes: 26
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: como encontrar un archivo xml que esta dentro de un jar

hola LuisChavezB, gracias por responder.

sabes que si he hecho lo que mensionas y funciona, pero el asunto es que necesito que los archivos esten dentro del jar por razones de portabilidad y por privacidad...

otro problema que tenido es que haciendo lo qu tu dices, es decir copiar la carpeta fuera del jar encuetra los archivos xml, pero lo q pasa es que desde estos archivos tambien hago referencia a otros archivos que estan ubicados en otros paquetes.

este es un segmento de codigo del xml donde llamo al archivo "diccionario" y "dimex30.filler"

<component name="dictionary"
type="edu.cmu.sphinx.linguist.dictionary.FastDicti onary">
<property name="dictionaryPath"
value="resource:/diccionarios/diccionario"/>
<property name="fillerPath"
value="resource:/diccionarios/dimex30.filler"/>
<property name="addSilEndingPronunciation" value="false"/>
<property name="allowMissingWords" value="false"/>
<property name="unitManager" value="unitManager"/>
</component>

espero se entienda lo escrito, gracias nuevamente!!!
  #4 (permalink)  
Antiguo 28/11/2012, 14:05
Avatar de kikelp  
Fecha de Ingreso: marzo-2011
Mensajes: 26
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: como encontrar un archivo xml que esta dentro de un jar

hola LuisChavezB, gracias por responder.

sabes que si he hecho lo que mensionas y funciona, pero el asunto es que necesito que los archivos esten dentro del jar por razones de portabilidad y por privacidad...

otro problema que tenido es que haciendo lo qu tu dices, es decir copiar la carpeta fuera del jar encuetra los archivos xml, pero lo q pasa es que desde estos archivos tambien hago referencia a otros archivos que estan ubicados en otros paquetes.

este es un segmento de codigo del xml donde llamo al archivo "diccionario" y "dimex30.filler"

Código XML:
Ver original
  1. <component name="dictionary"
  2.        type="edu.cmu.sphinx.linguist.dictionary.FastDictionary">
  3.         <property name="dictionaryPath"
  4.      value="resource:/diccionarios/diccionario"/>
  5.         <property name="fillerPath"
  6.      value="resource:/diccionarios/dimex30.filler"/>
  7.         <property name="addSilEndingPronunciation" value="false"/>
  8.         <property name="allowMissingWords" value="false"/>
  9.         <property name="unitManager" value="unitManager"/>
  10. </component>
espero se entienda lo escrito, gracias nuevamente!!!
  #5 (permalink)  
Antiguo 28/11/2012, 14:07
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 13 años
Puntos: 34
Respuesta: como encontrar un archivo xml que esta dentro de un jar

La solución podría ser colocar tu Loader en el mismo paquete que tus recursos.

y desde los demas paquetes llamarlo:

Código java:
Ver original
  1. Loader.get(resName);
  #6 (permalink)  
Antiguo 28/11/2012, 14:30
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 13 años
Puntos: 34
Respuesta: como encontrar un archivo xml que esta dentro de un jar

Aquí te dejo un ejemplo:
https://github.com/luischavez/resource-example/
  #7 (permalink)  
Antiguo 28/11/2012, 14:34
Avatar de kikelp  
Fecha de Ingreso: marzo-2011
Mensajes: 26
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: como encontrar un archivo xml que esta dentro de un jar

Disculpa mi ignorancia pero a que te refieres con "Loader"? es una clase?
  #8 (permalink)  
Antiguo 28/11/2012, 14:37
Avatar de kikelp  
Fecha de Ingreso: marzo-2011
Mensajes: 26
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: como encontrar un archivo xml que esta dentro de un jar

gracias LuisChavezB, ahora lo veo y comento luego!!
  #9 (permalink)  
Antiguo 30/11/2012, 12:47
Avatar de kikelp  
Fecha de Ingreso: marzo-2011
Mensajes: 26
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: como encontrar un archivo xml que esta dentro de un jar

holaa.. otra vez, disculpa por la demora en responder..

bien estuve usando el ejemplo que me pasaste y nuevamente funciona bien desde la ide pero no lo hace cuando lo hago desde el jar.. sin embargo el ejemplo que me pasaste si funciona en ambos..

las lineas de codigo que uso para hacer esto, ademas de haber usado la clase Loader, son estas dos
Código JAVA:
Ver original
  1. String url = Loader.get("recognizer.config"+i+".xml").getFile();
  2.  
  3. recognizers.put(recognizerName, new FacturaRecognizer(recognizerName, url));

En la primer linea llamo al metodo y me devuelve la ruta del archivo xml,

ambos parametros del constructor FacturaRecognizer son String

lo que me muestra por consola cuando ejecuto el jar es esto:
Código BASH:
Ver original
  1. /home/user/Repositorio/trunk/Codificacion/Proyecto/archivo.jar!/configFiles/recognizer.config4.xml

esta es la salida que obtengo en consola:
Código BASH:
Ver original
  1. java.lang.RuntimeException: java.io.FileNotFoundException: /home/eflores/RepositorioSVN/tvdi/trunk/Codificacion/ProyectFacturaFinalV2.1/build/speechRecognizer.jar!/configFiles/recognizer.config1.xml (No such file or directory)

gracias!!..
  #10 (permalink)  
Antiguo 30/11/2012, 20:26
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 13 años
Puntos: 34
Respuesta: como encontrar un archivo xml que esta dentro de un jar

Podrías poner el código de la clase FacturaRecognizer ?

A simple vista el error es por tratar de acceder al archivo dentro del jar como si de un archivo del sistema se tratase.
La diferencia en cuanto a mi ejemplo es que yo accedo a su contenido con un InputStream.
  #11 (permalink)  
Antiguo 04/12/2012, 18:31
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años, 8 meses
Puntos: 12
Respuesta: como encontrar un archivo xml que esta dentro de un jar

justamente tenia yo ese problema pero lo solucione de la siguiente manera llamandolo desde la clase como un inputstream de la siguiente manera

InputStream In = this.getClass().getResourceAsStream("/nombrepaquete/nombrearchivo.xml");

asi declaras el inputstream llamandolo , ojo la diagonal debe ir antes del nombre del paquete que contiene tu archivo xml y despues otra diagonal con el nombre de tu archivo xml y su extension , ami me sucedia lo mismo con netbeans funcionaba bien y al compilar no lo reconocia , pero asi con el codigo como lo acabo de poner funciona al 100 testeado espero te ayude a solucionar tu problema , de cualquier manera si no me comprendiste te paso el dato de donde obtube la solucion

http://download.java.net/jdk8/docs/t...resources.html

suerte

Etiquetas: jar, path, relativo, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:17.