3 Stimmen

Wie lese ich eine externe xml-Datei aus einem jar

Ich muss eine externe XML-Datei aus meiner Java-Anwendung in einer ausführbaren Jar-Datei lesen.
Wenn ich es von der Konsole aus lade (java -jar package.jar), funktioniert es gut, aber wenn ich es per Doppelklick lade (Java Platform SE Binary), funktioniert es nicht.
Ich habe dieses Problem mit dem relativen Pfad. Mit dem absoluten Pfad funktioniert es auf beide Arten.

5voto

BalusC Punkte 1034465

Sie müssen den (JAR-relativen) Pfad zu der XML-Kachel in die Datei Class-Path Eintrag im MANIFEST.MF Datei. Dieser Eintrag enthält Informationen über den Laufzeitklassenpfad des JARs. Unter der Annahme, dass Sie die XML-Datei im gleichen Ordner wie die JAR-Datei selbst haben möchten, reicht Folgendes aus:

Class-Path: .

(Vergessen Sie nicht, eine Leerzeile am Ende von MANIFEST.MF Datei)

Dann können Sie sie als Klassenpfad-Ressource erhalten, indem Sie Class#getResource() o ClassLoader#getResource() . In Ihrem Fall reicht die erste Variante aus.

URL xmlResource = getClass().getResource("/filename.xml");
File xmlFile = new File(xmlResource.getPath());
// ...

1voto

duffymo Punkte 298898

Fügen Sie diese Datei dem Klassenpfad in Ihrem JAR-Manifest hinzu und lesen Sie sie als Eingabestrom.

1voto

Damien Punkte 2852

0voto

Peter DeWeese Punkte 17855
(new File(".")).getAbsolutePath();

Damit sollten Sie den Pfad des Jars erhalten. Drucken Sie ihn aus, um ihn zu überprüfen, und bauen Sie dann Ihren relativen Pfad darauf auf.

0voto

gawi Punkte 13510

Es ist schwer, eine genaue Antwort zu geben, ohne zu wissen, welches Betriebssystem Sie verwenden.

Die allgemeine Antwort wäre, den Launcher (das Symbol auf dem Desktop) so zu ändern, dass das anfängliche Arbeitsverzeichnis dasselbe ist wie das, das Sie verwenden, wenn Sie den Befehl von einer Shell aus ausführen.

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