2009-04-20 6 views
6

Sto tentando di caricare un file delle proprietà senza utilizzare il percorso effettivo del file. L'ho già fatto su alcune altre semplici app utilizzando:classloader.getSystemResourceAsStream restituisce null

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

Ma questa volta non funziona. InputStream è nullo per qualche motivo. PROPERTIES_FILE è una costante definita come "app.properties". Ho provato a rimuovere l'estensione .properties e ho ottenuto gli stessi risultati.

Qualche idea?

Grazie.

+2

Dove si trova app.properties? –

risposta

13

La costante PROPERTIES_FILE dovrebbe includere il pacchetto così come le proprietà del file (ad esempio "com/alcuni/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

Ho aggiunto le informazioni sul pacchetto come hai detto ma ho ancora lo stesso errore. Se la chiamata è statica se questo aiuta qualsiasi ... – Lancelot

+0

In realtà c'era un errore di battitura quando ho aggiunto il nome del pacchetto. Questa soluzione ha funzionato alla grande. Grazie! :) – Lancelot

+1

Probabilmente si vorrà chiamare getResourceAsStream sul class loader della classe. O probabilmente sulla classe della tua classe. –

0

Quando getSystemResourceAsStream rendimenti null, significa la risorsa non è stato trovato Assicurati che la risorsa richiesta sia realmente sul classpath nella posizione specificata