2009-04-20 17 views
6

Estoy intentando cargar un archivo de propiedades sin utilizar la ruta real del archivo. Ya lo he hecho en algunas otras aplicaciones simples usando:classloader.getSystemResourceAsStream devuelve nulo

InputStream inputStream = ClassLoader.getSystemResourceAsStream(PROPERTIES_FILE); 
props.load(inputStream); 

Pero esta vez no funciona. El inputStream es nulo por alguna razón. PROPERTIES_FILE es una constante definida como "app.properties". Traté de eliminar la extensión .properties y obtuve los mismos resultados.

¿Alguna idea?

Gracias.

+2

¿Dónde se encuentra app.properties? –

Respuesta

13

La constante PROPERTIES_FILE debe incluir el paquete, así como las propiedades de archivo (por ejemplo, "com/algunos/Library/file.properties".

final static String PROPS_FILE = "/com/some/library/file.props"; 
        //The preceding "/" is dependendant on wheterh 
        //you are going to be giving a relative or absolute location 
    InputStream is = YourCurrentClass.class.getResourceAsStream(PROPS_FILE); 
+0

He agregado la información del paquete como mencionó pero todavía tengo el mismo error. Por cierto, el método donde estoy Hacer esa llamada es estático si eso ayuda a ... – Lancelot

+0

En realidad, hubo un error tipográfico cuando agregué el nombre del paquete. Esa solución funcionó de maravilla. ¡Gracias! :) – Lancelot

+1

Probablemente quieras llamar a getResourceAsStream en el cargador de clases de tu clase. O probablemente en la clase de su clase. –

0

Cuando getSystemResourceAsStream vuelve null, significa que el recurso no se ha encontrado Asegúrese de que el recurso solicitado esté realmente en el classpath en la ubicación especificada.

Cuestiones relacionadas