2017-12-17 3 views
0

Ich habe ein Maven-Projekt, das ich mit Intellij IDEA entwickeln. Ich habe in intellij ein Ressourcenverzeichnis angegeben, das einige Konfigurationsdateien und Datendateien enthält. Wenn ich das Programm in intellij ausführe, gibt es kein Problem, aber ich möchte auf diese Dateien zugreifen, wenn ich die JAR-Datei auch über die Befehlszeile ausfühle, und ich weiß nicht, wie man für Maven angibt, dass ein Verzeichnis ein Ressourcenverzeichnis ist ohne dass es in die jar-Datei kopiert wird, was ich nicht will. Gibt es eine Markierung auf java, um auf das Ressourcenverzeichnis hinzuweisen?Zugriff auf Ressourcen (mit Eingabedaten und Konfiguration) aus JAR-Datei

Edit: Um klar zu sein, habe ich meine JAR-Datei und ich möchte auf eine Ressource-Verzeichnis außerhalb meiner JAR-Datei mit dem ClassLoader zugreifen. Es scheint jedoch so, dass ich -classpath nicht verwenden kann, um anzugeben, wo der classLoader aussehen sollte, da es keinen Unterschied im Verhalten gibt.

Ich kann natürlich eine normale Textdatei öffnen, aber ich würde es lieber von der ClassLocader-Maschine arbeiten lassen.

+0

kopiert Ihren Ressourcenordner wie @Antoniossss sagen, dann klicken Sie mit der rechten Maustaste darauf. Gehe zu 'Mark Directory als -> Ressourcen Root und es funktioniert. – amir110

+0

Ja, es funktioniert, wenn ich es aus der IDE ausführe, aber ich muss in der Lage sein, die Dateien zu ändern, nachdem ich das jar erstellt habe, so dass das Verzeichnis irgendwo außerhalb des jar leben muss. – MatsB

+0

Mögliches Duplikat von [Lesen einer einfachen Textdatei in Java] (https://stackoverflow.com/questions/4716503/reading-a-plain-text-file-in-java) – Antoniossss

Antwort

0

Wenn Sie Maven-Struktur verwenden, sollten Sie 2 Verzeichnisse haben - java/main/src mit Quellen und java/main/resources mit App-Ressourcen. Beide werden in JAR

+0

Danke, aber ich möchte es nicht kopieren . Ich muss in der Lage sein, Eingabedaten und Konfigurationsdateien von außerhalb des Jar zu ändern. – MatsB

+0

Dann verschieben Sie es woanders und schreiben Sie entsprechenden Code, um externe Dateien zu verwenden. – Antoniossss

+0

OK, ich dachte, es gibt eine Möglichkeit, dem jvm mitzuteilen, dass ein Verzeichnis ein Ressourcenverzeichnis ist, so dass ich den Speicherort zur Laufzeit angeben kann. Ich hätte es gerne vermieden, den Ort im Code zu fixieren. Danke trotzdem. – MatsB

Verwandte Themen