20 Stimmen

Datei innerhalb eines Jars laden

Ich muss eine Konfigurationsdatei in eine Jar-Datei packen. Die Konfigurationsdatei befindet sich unter dem Root der Jar-Datei. Ich habe jedoch den folgenden Fehler:

Verursacht durch: java.lang.IllegalArgumentException: URI ist nicht hierarchisch at java.io.File.(Unbekannte Quelle)

File url = new File(MyClass.class.getClassLoader().getResource("my.conf").toURI());

29voto

Andrew T Finnell Punkte 13107

Sie sollten Folgendes verwenden getResourceAsStream() stattdessen. Wenn die Datei in Ihr JAR eingebettet ist, lautet die URI höchstwahrscheinlich bundle:// URI

InputStream is = this.getClass().getResourceAsStream("my.conf");

7voto

Vladimir Ivanov Punkte 42019

Warum brauchen Sie eine Datei? WENN Sie die Konfiguration lesen müssen, verwenden Sie

Class.getResourceAsStream("/my.conf");

Dies muss nur die Datei in dem einen Ordner mit dem Root Ihres Pakets sein (derselbe wie im Root des jar)

4voto

Aravind Yarram Punkte 76365

Die Datei sollte sich im selben Paket befinden wie die MyClass. Ich habe gerade festgestellt, dass Sie ein File-Objekt erstellen. Versuchen Sie stattdessen, getResourceAsStream() zu verwenden. Dies ist der richtige Weg, wenn Sie den Inhalt aus einer Klassenpfad-Ressource lesen wollen. Hier ist das Beispiel .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X