2010-04-20 3 views
12

Hallo Leute Anfänger Java Frage.Wie man Textdateien mit ausführbarem Glas einschließt

Ich habe ein Java-Projekt und ich möchte eine Textdatei mit der ausführbaren Jar enthalten. Im Moment ist die Textdatei im Standardpaket.

InputFlatFile currentFile = neue InputFlatFile ("src/theFile.txt");

Ich nehme die Datei mit dieser Zeile, wie Sie mit src sehen können. Dies funktioniert jedoch nicht mit dem ausführbaren Jar.

Kann mir bitte jemand sagen, wie man diese Datei mit dem ausführbaren Jar behält, damit jemand, der das Programm benutzt, einfach auf ein einzelnes Icon klicken und das Programm ausführen kann.

Danke!

+2

Sie können getResourceAsStream (http://java.sun.com/javase/7/docs/api/java/lang/ClassLoader.html#getResourceAsStream%28java.lang.String%29) verwenden. Siehe http://stackoverflow.com/questions/574809/java-load-a-resource-contained-in-a-jar unter anderen Fragen. –

+0

Danke, ich schaue mir das an. – Jake

Antwort

5

Das Basisverzeichnis in der JAR-Datei befindet sich im Klassenpfad.

Versuchen Sie InputFlatFile currentFile = neue InputFlatFile ("theFile.txt");

Sie verwenden wahrscheinlich eine IDE und sie enthält einen src-Ordner, den die IDE für die Basis der Pakete verwendet. Wenn Sie die JAR-Datei über die IDE erstellen, wird der Ordner "src" entfernt, und im Stammordner sind die Pakete enthalten.

das heißt in Eclipse src/com.blah.blah einmal JAR-Datei, die die Struktur erstellt wird, wird com.blah.blah

Natürlich Ich gehe davon aus, dass InputFlatFile richtig den Wert liest.

http://www.devdaily.com/blog/post/java/read-text-file-from-jar-file

+0

Danke, dieser Link hat mir geholfen, es herauszufinden! – Jake

+0

wünschte, es hat für mich funktioniert. Ich habe zwei Dateien im 'root' der JAR-Datei und bekomme einen Fehler bei securityProps.setProperty ("javax.net.ssl.trustStore", "CDAtruststore.jks"); Der Fehler ist, dass "das System die angegebene Datei nicht finden kann". Die Dateien befinden sich jedoch auf der obersten Ebene im Jar. Hat mich stundenlang verblüfft. –

5

Sie wollen, dass es in der ausführbaren jar? dann die Datei lesen Sie

getClass().getResourceAsStream() 

die Datei lesen verwenden soll.

Behalten Sie die Textdatei in dem Paket bei, auf das Sie zugreifen möchten. Der Classloader wird es finden.

Denken Sie auch daran, dass die Dateinamen in JARs zwischen Groß- und Kleinschreibung unterscheiden.