2009-07-07 19 views
8

Quiero usar el ClassLoader para cargar un archivo de propiedades para la clase Properties. He simplificado el código siguiente para eliminar el error de manipulación para los propósitos de esta discusión:¿Cómo uso Java ClassLoader para cargar un archivo de la ruta de clases?

loader = this.getClass().getClassLoader(); 
in = loader.getResourceAsStream("theta.properties"); 
result = new Properties(); 
result.load(in); 

En el mismo directorio que esta clase tengo el archivo "theta.properties" pero el InputStream siempre es nulo. ¿Estoy poniendo el archivo en el lugar equivocado? Estoy usando eclipse y está configurado para compilar los archivos de clase en la carpeta de origen, así que ese no debería ser el problema.

No encuentro nada en el JavaDoc para que ClassLoader me diga en qué classpath se está buscando.

Respuesta

10

Mediante el uso de getClass().getClassloader() busca "theta.properties" del directorio de ruta raíz. Simplemente use getClass().getResourceAsStream() para obtener un recurso relativo a esa clase.

6

Si el archivo está en el mismo directorio que la clase, debe agregar un prefijo al paquete de la clase como directorio.

Así que si su paquete es:

package com.foo.bar; 

A continuación, el código es:

.getResourceAsStream("com/foo/bar/theta.properties"); 
-1

Puede usar ResourceBundle

Cuestiones relacionadas