2010-03-31 15 views
6

Aquí está mi estructura:leer el archivo XML dentro de un frasco-paquete

  • com/miempresa/ValueReader.class
  • com/miempresa/recursos/values.xml

puedo leer el archivo en mi proyecto de Eclipse, pero cuando lo exporte a .jar nunca podrá encontrar los valores.xml.

Intenté usar ValueReader.class.getResource() y ValueReader.class.getResourceAsStream() pero no funciona.

¿Cuál es el problema aquí? ¿Cómo obtengo un objeto de archivo para mi values.xml?

B.

+0

posible duplicado de http://stackoverflow.com/questions/2504272/shipping-java-code-with-data-baked-into-the-jar – Kris

Respuesta

8

usted no puede conseguir un objeto File (puesto que ya no es un archivo una vez que está en el .jar), pero usted debe ser capaz de hacerlo como una corriente a través de getResourceAsStream(path);, donde es path el complete camino a su clase.

p. Ej.

/com/mycompany/resources/values.xml 
+0

Lo probé y no funcionó. Su enfoque fue correcto aunque. Utilicé getResourceAsStream (ruta), pero en lugar de path = com/mycompany/resources/values.xml, utilicé path = resources/values.xml y está funcionando. ¡Gracias de todos modos! –

+3

no funcionó porque no puso la barra diagonal, lo que significa la raíz de la ruta de clases. Sin él, el camino es relativo. – Bozho

+0

Ah cierto. Gracias. ¡Nunca lo olvidaré más! –

-1

Puede extraer el frasco a continuación, toma lo que quiere, en la misma clase de la ruta usando:

ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new 
FileInputStream(zipfile.getCanonicalFile()))); 
0

Esto funcionará ...

Thread.currentThread().getContextClassLoader().getResource("com/mycompany/resources/values.xml") 
2

No se puede obtenga un File para el archivo porque está en un archivo jar. Pero se puede obtener un flujo de entrada:

InputStream in = ValueReader.class.getResourceAsStream("resources/values.xml"); 

getResourceAsStream y getResource convertir el paquete de la clase a una ruta de archivo, a continuación, añadir en el argumento. Esto dará una secuencia para el archivo en la ruta /com/mycompany/resources/values.xml.

Cuestiones relacionadas