Laden der Datei log4j2.xml aus demselben Verzeichnis wie die JAR-Datei
Frage
Ich habe ein Verzeichnis /release/, das meine application.jar sowie die Datei log4j2.xml enthält.Wenn ich die Anwendung mit ausführe java -jar application.jar
Die Konfigurationsdatei log4j2.xml wird nicht abgerufen.Es funktioniert, wenn ich explizit den Speicherort der XML-Datei spezifiziere
java -Dlog4j.configurationFile=log4j2.xml -jar application.jar
Gibt es eine Möglichkeit, mein Programm anzuweisen, die Konfigurationsdatei immer aus demselben Verzeichnis abzurufen, in dem sich die JAR-Datei befindet?Ich möchte das Programm so einfach wie möglich halten und nicht verlangen, dass der Benutzer beim Ausführen der Anwendung eine umständliche Systemeigenschaft festlegt.
Lösung
Ohne die Systemeigenschaft sucht log4j-2.0 im Klassenpfad nach einer log4j2.xml-Datei.Daher verstehe ich Ihre Frage wie folgt:Wie kann ich meine App damit starten? java -jar application.jar
und haben Sie die Datei log4j2.xml im Klassenpfad?
Dies hängt davon ab, ob Ihre application.jar-Datei über eine verfügt Class-Path
Eintrag in seinem Manifest (http://docs.oracle.com/javase/8/docs/technotes/tools/windows/findingclasses.html#sthref8 ).
Sie können die Datei log4j2.xml natürlich auch einfach in die Datei application.jar einbinden.Wenn Sie das vermeiden möchten, können Sie das Verzeichnis mit der Datei log4j2.xml zum hinzufügen Class-Path
Eintrag im Manifest der JAR-Datei.(Dies könnte das aktuelle Verzeichnis „.“ sein.)