Hinzufügen von relativem Verzeichnis zu Java ClassPath und mit Classloader (). getResourceAsStream ("")
-
20-08-2019 - |
Frage
Ist es möglich, dem Java -Klassenpfad ein relatives Verzeichnis (dh Foo/Bar/Plugh) hinzuzufügen und zu verwenden
InputStream in = getClassLoader().getResourceAsStream("xyzzy.properties");
Foo/Bar/plugh/xyzzy.Properties abrufen?
Mein Klassenpfad sieht so aus:
foo.jar;foo/bar/plugh;xyz.jar
Und ich kann Klassen und Ressourcen sowohl von Foo- als auch von XYZ -Gläser verwenden, aber nicht aus dem Plugh -Verzeichnis. In diesen Fällen, in
ist immer null.
Ich kann das nicht zum Laufen bringen und bin mir nicht sicher, ob dies nur nicht unterstützt wird. Ich fehlt etwas Subtiles oder ob ich etwas falsch mache. Muss ich einen absoluten Weg verwenden?
Lösung
Vielleicht habe ich missverstand, was Sie versuchen, aber wenn Sie einen Ordner in Ihrem Klassenpfad haben, bedeutet dies, dass alle Dateien darunter auch im Klassenpfad stehen sollten. Wenn nicht, können Sie immer jede .Properties -Datei auf dem Klassenpfad übergeben.
Da die Datei/der Ordner, der die Datei enthält, im Klassenpfad enthält, sollten Sie jedoch nur in der Lage sein:
InputStream in = new FileInputStream("classpath:xyz.properties")
Und da "Foo/Bar/Plugh" im Klassenpfad ist, wird einer der Orte nach xyz.Properties in "Foo/Bar/Plugh" suchen.