Im Programm zu verwendende Dateien in Jar-File einbinden

Volti

Mitglied
Servus,

so, ich finde momentan keine Lösung, um Dateien, z.B. Hilfetexte für ein Programm in einer runnable Jar "richtig" einzubinden.

Diese Dateien sollen im Programm irgendwann ausgelesen werden, z.B. wenn der User auf den Hilfebutton klickt, wird der Text aus der Datei gelesen und in einem Frame angezeigt. In der Entwicklungsumgebung funktioniert das einwandfrei, nur leider nicht sobald man eine Jar erzeugt (auch wenn sich die Dateien in der Jar befinden.)

Ein ähnliches Problem hatte ich mit Icons auf JButtons. Die wurden dann einfach nicht angezeigt.
Mit
Code:
URL url = getClass().getRessource(path);
usw. ging das dann.

Nur mit anderen Dateien (z.B. htmls) funktioniert das nicht.

Vielleich hat ja von euch jemand dieses Problem auch schon mal gehabt und lösen können.

Danke!
 
Bitte konkretisiere die Frage ein wenig:

Wie ist das Jar aufgebaut?
Wie ist der Pfad aufgebaut, der dann #getResource() übergeben wird?

Der Mechanismus selbst ist unabhängig vom Dateityp.
 
Das File beinhaltet die Ordner für drei packages + META-INF.
In einem der Packages liegen die Class-Dateien und zwei weitere Ordner.
Einer für die Icons (das funktioniert ja) und einer für diverse Texte.

Der Pfad für getRessource() schaut z.B. folgendermaßen aus: "texts/help.html", also analog zu den Icons (z.B. "icons/stop.gif").

So, wie gesagt, es funktioniert soweit alles gut, bis zum Erstellen und Ausführen der jar.

Ich hab mit der URL diverse Experimente gemacht.
Umwandlung in URI, String, File (über URI oder getFile()) usw. usw. usw.

Aber es will einfach nicht :)
 
Das File beinhaltet die Ordner für drei packages + META-INF.
In einem der Packages liegen die Class-Dateien und zwei weitere Ordner.
Einer für die Icons (das funktioniert ja) und einer für diverse Texte.

Der Pfad für getRessource() schaut z.B. folgendermaßen aus: "texts/help.html", also analog zu den Icons (z.B. "icons/stop.gif").

Also in einem der Packages liegen noch die beiden Ordner, ja?
Oder liegt icons/ und texts/ auf root-Ebene?

Es macht einen Unterschied, ob die Pfade zum #getResource() relativ oder absolut sind.
 
nein, die beiden Ordner liegen nicht auf der root-Ebene sondern in einem der package-Ordner.

Ich bin nur verwundert über die Tatsache, dass es mit den Icons ja super funktioniert, nur mit den anderen Dateien nicht.

Naja, aber schon mal Danke für die schnelle Hilfe.
 
Nach vielen weiteren Experimenten hat die Konsolenausgabe zwar, soweit ich das beurteilen kann, immer einen korrekten Pfad angegeben, verwertet wurde dieser allerdings in der Jar nicht sinnvoll.

Funktioniert hats am Ende trotzdem mit diesen Zeilen

Code:
private InputStream getInStream(String path)
	{
		return getClass().getResourceAsStream(path);
	}

Wobei ich jetzt hier gezwungen war, mit dem Stream weiter zu arbeiten, obwohl ich persönlich den Pfad bevorzugen würde.

Falls jemand noch eine Lösung parat hat.....immer her damit :)
 
Hi,
ich baue mir immer eine kleine Ordnerstruktur auf, wenn ich eine jar Datei habe.

Soll heißen, die jar liegt in einem Hauptordner mit Unterordnern, hierzu muss ich vorzeitig beim Programmieren immer den relativen Pfad angeben.

Liegt z.B. im Hauptordner ein Unterordner "help", so ist mein Pfad im Programm: "./help " bzw. "./help/datei.irgendwas "

Ich weiß jetzt nicht ob es dir weiterhilft, aber so läuft bei mir alles wunderbar

Gruß Alex
 
Ich hab damit auch ein bisschen rumgespielt, ab er irgendwie hats nicht funktioniert. (Wahrscheinlich nur falsch angewendet...)
Aber ich werde mich noch weiter damit beschäftigen!
Man weiss ja nie, wofür man es mal braucht!
Danke!
 
Zurück