2016-11-12 8 views
0

Ich habe versucht, für ein paar Stunden daran zu arbeiten und konnte es immer noch nicht richtig, also dachte ich, ich würde fragen. Ich versuche Log4j zu verwenden, um Programmanweisungen in eine Ausgabedatei zu schreiben, und dies funktioniert auf meinem lokalen Rechner einwandfrei.Quellordner in Runnable Jar Disappearing

Ich habe derzeit meine log4j.properties-Datei in einem Ordner namens Protokollierung. Es ist als Quellordner markiert. Wenn ich meine ausführbare JAR-Datei über Eclipse erzeuge, platziere ich sie auf einem anderen Server und es wird angezeigt, dass die Datei log4j.properties nicht gefunden werden kann. Ich habe bisher ein paar verschiedene Dinge ausprobiert und nichts funktioniert. Alles, was ich tun möchte, ist sicherzustellen, dass die Datei log4j.properties in der ausführbaren JAR enthalten ist. Mein Setup ist jetzt das Folgende.

In meinem Java-Programm habe ich den folgenden Code, der lokal arbeitet. Fehle ich einen grundlegenden Schritt während der JAR-Generierung in Eclipse? Scheint so, als sollte das einfach sein, aber es ist jetzt nicht richtig. Ich habe sogar das JAR nach der Erstellung in 7zip extrahiert und natürlich ist die Logging-Datei überhaupt nicht vorhanden. Es ist wie es komplett verschwunden ist aus irgendeinem Grund. Ich würde es sehr schätzen, wenn mir jemand helfen könnte, danke.

public static void main(String[] args) 
    { 

     FileInputStream fis = new FileInputStream("logging\\log4j.properties"); 

     if(fis != null) 
     { 
      PropertyConfigurator.configure(fis); 
     } 

     logger.info("process started."); 
    } 

UPDATE

Statt Input der Verwendung direkt geändert ich meinen Code nur die unten verwenden und es funktioniert jetzt, den Zugriff auf die log4j.properties durch die runnable JAR-Datei.

PropertyConfigurator.configure(Converter.class.getResourceAsStream("/logging/log4j.properties")); 
logger.info("Conversion process started."); 

Antwort

1

Ich sehe zwei Probleme: a), wenn Sie ein Glas mit Eclipse erstellen, wird standardmäßig nur die kompilierten Klassen Reißverschluss (so .class-Dateien) in Ihr Ziel .jar-Datei, müssen Sie Eclipse angeben dass Sie auch die Ressourcen Ihres Projekts einbeziehen möchten, dies können Konfigurationsdateien wie eine Eigenschaftendatei für log4j sein, aber auch Ressourcenbündel für i18n-Nachrichten usw. Eine Erklärung, wie dies zu tun ist, finden Sie hier: Java & Eclipse: Resources in JAR? . Wenn also die Eigenschaften von log4j nicht in der JAR-Datei enthalten sind, überprüfen Sie die Erstellung der JAR-Datei!

b) Wenn Sie die Ressourcen in Ihrer JAR-Datei haben, können Sie sie nicht mit einem FileInputStream lesen: Sie werden nicht in einer eigenständigen Datei gespeichert, sie werden in der JAR-Datei gespeichert. Ich nehme an, dass Ihre JAR-Datei Teil des Classpath ist, also wenn Sie die Ressourcen in Ihre JAR-Datei hinzugefügt haben, müssen Sie sie als Ressourcen behandeln: siehe Load resource from anywhere in classpath für weitere Informationen zu diesem Thema

+0

Vielen Dank, diesen Kommentar und Forschung in anderen Bereichen führte zu meiner Antwort mit getresourcestream! – Tastybrownies

+0

Aktualisiere meine Frage! – Tastybrownies

Verwandte Themen