2009-04-20 20 views
6

Ich versuche, eine Eigenschaftendatei zu laden, ohne den tatsächlichen Pfad der Datei zu verwenden. Ich habe bereits, dass auf einigen anderen einfachen Anwendungen getan werden:classloader.getSystemResourceAsStream gibt null zurück

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

Aber diesmal ist es nicht funktioniert. Der InputStream ist aus irgendeinem Grund null. PROPERTIES_FILE ist eine Konstante, die als "app.properties" definiert ist. Ich habe versucht, die Erweiterung .properties zu entfernen und die gleichen Ergebnisse erhalten.

Irgendwelche Ideen?

Danke.

+2

Wo befindet sich App.properties? –

Antwort

13

Die PROPERTIES_FILE Konstante sollte das Paket auch enthalten, wie die Eigenschaftendatei (zB "com/some/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

Ich habe die Paketinformationen wie angegeben hinzugefügt, aber immer noch den gleichen Fehler. BTW die Methode, bei der ich ' m diesen Anruf zu tun ist statisch, wenn das hilft ... – Lancelot

+0

Eigentlich gab es einen Tippfehler, als ich den Paketnamen hinzufügte. Diese Lösung hat super funktioniert. Vielen Dank! :) – Lancelot

+1

Sie möchten wahrscheinlich getResourceAsStream auf Klassenladeprogramm Ihrer Klasse aufrufen. Oder wahrscheinlich in deiner Klassenklasse. –

0

Wenn getSystemResourceAsStream kehrt null, bedeutet es, die Ressource wurde nicht gefunden Stellen Sie sicher, dass sich die angeforderte Ressource tatsächlich im Klassenpfad am angegebenen Speicherort befindet.