2010-12-28 13 views
19

Necesito empaquetar un archivo de configuración dentro de un contenedor. el archivo de configuración está debajo de la raíz del archivo jar. Sin embargo me dieron el siguiente error:cargar archivo dentro de un contenedor

Caused by: java.lang.IllegalArgumentException: URI is not hierarchical at java.io.File.(Unknown Source)

File url = new File(MyClass.class.getClassLoader().getResource("my.conf").toURI()); 

Respuesta

28

Debería usar getResourceAsStream() en su lugar. Si el archivo está incrustado en el JAR del URI es más probable paquete: // URI

InputStream is = this.getClass().getResourceAsStream("my.conf"); 
4

El archivo debe estar en el mismo paquete que el MiClase. Me acabo de dar cuenta de que está creando un objeto File. En su lugar, intente utilizar getResourceAsStream(). Esta es la manera correcta si quiere leer los contenidos de un recurso de ruta de clase. Aquí is the example.

+0

corrección: la se encontró el archivo, pero como está dentro de un contenedor, obtuve uri no es un error jerárquico – user217631

+0

publicar el seguimiento de la pila –

+0

El siguiente error debería mostrarse "Excepción en el hilo" principal "java.lang.IllegalArgumentException: URI no es jerárquico" – hiropon

7

¿Por qué necesita un archivo? SI usted necesita para leer la configuración utilizar

Class.getResourceAsStream("/" + "my.conf"); 

Esto sólo tendrá que ser el archivo en la carpeta con la raíz de su paquete (el mismo que en la raíz de la jarra)

+1

¿por qué ¿Concatenas la cuerda allí? – pstanton

+2

realmente no importa, quería escribir "/" + fileName, pero cambió la variable al nombre real. –

Cuestiones relacionadas