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.

War es hilfreich?

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.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top