vorab, ich nutze die IDE von Intellij. Mein Problem ist, dass eine Klasse die Text- und HTML-Dateien nicht mehr finden kann, wenn ich ein Runable Jar-File generiert habe.
Ich stecke meine Resourcen (Bild-, Text-, HTML-Dateien) in einen Ordner "resources" auf direkter Ebene mit dem "src" Ordner eines Projektes und in der Java-Klasse greife so zu:
Das Ausführen innerhalb der IDE funktioniert auch mit den Resourcen, sie werden gefunden, im Jar-File allerdings nicht.
Dabei habe ich unter Intellij in den Artifacts einen Ordner "resources" mit den zugehörigen Dateien angelegt. Die Struktur der Jar_files sieht so aus:
META-INF
- MANIFEST.MF
com
resources
- about.html
- license.txt
Wie muss ich die Resources in das JAR-File integrieren, dass die Dateien von der Klasse gefunden werden? Muss das vielleicht im Mainfest zusätzlich eingetragen werden? Bisher läuft es nur, wenn ich den Ordner mit den Resources neben die Jar-Datei seperat lege. Ziel ist es aber sie mit dem Jar auszuliefern.
Ich habe dazu was gefunden Ressourcen aus dem Klassenpfad und aus Jar, steht somit auch meinem Standardwerk drin.
Aber mal dumm gefragt:
Erzeugt Eclipse beim Exportieren in ein Runable Jar-File diese Klasse selber? Ich habe sie jetzt noch nicht entdeckt.
Somit ist Eclipse, was das Lernen angeht, recht wenig empfehlenswert, weil man durch die Automatismen vieles nicht lernt. Ich sehe das gerade mit den Layoutmanagern. Ohne Gui-Builder ist das ziemlich kompliziert.
Ich gehe mal davon aus, dass der LicenceEditor eine Klasse von dir ist.
Du ließt Dateien momentan ganz normal ein. Und genau das funktioniert nicht, da ein JAR ZipKomprimiert ist.
Das heißt anstatt des aktuellen Einlesens musst du das mit getRessource... machen.
Das ist vom Typ JEditorPane. Aber heißt das, dass ich jede Datei (Bild, Plaintext, HTML) über einen InputStream einlesen muss, sobald ich das Programm als Jar-File verteilen will?
Die JEditorPane-Klasse erwartet allerdings, dass mit der Methode setpage() die Datei eingefügt wird. das klappt auch, wenn die IDE das Programm startet - die Dateien liegen auch hier auf der Festplatte.
Ich habe also diese zwei Code-Fragmente, die unter der IDE laufen:
Das ist jetzt auch wieder so unspezifisch:
Wie soll ich Dateien entpacken, die erst wenn der Code steht ins Jar-File gepackt werden? Und wie wird das realisiert? So liefert deine Aussage noch nicht einmal eine Google-Startvorlage.
Also so komme ich nicht weiter. Ich komme mir hier wie in einem Rateteam vor.
Wenn du dir keine Mühe gibst meine Aussagen zu verstehen ist es klar, dass du nicht hinter ihren Sinn kommst. Mit dem Unterschied, dass du spezielle Methoden zum Einlesen verwenden musst und Schreiben überhaupt nicht geht, verhalten sich Dateien im JAR genauso, wie Dateien außerhalb des JARs.
Du könntest zum Beispiel nach "Dateien zur Laufzeit aus JAR entpacken" suchen.
Oder du benutzt gleich Files.copy(InputStream, Path).
Eine weitere Möglichkeit wäre ein Installer, der beim ersten Start alles entpackt und alle Ordner/Dateien erstellt und dein Programm greift einfach nur darauf zu.
Hiermit unterstellst du mir regelrecht etwas. Woher willst du das überhaupt wissen? Du knallst hier Aussagen hin und unterlegst sie nicht korrekt mit Nachweisen. Zweitens scheinst du zu erwarten, dass jeder gleich den Wissenssatnd wie du haben sollte.
13 Beiträge - 2 Autoren
... verhalten sich Dateien im JAR genauso, wie Dateien außerhalb des JARs. Du könntest zum Beispiel nach "Dateien zur Laufzeit aus JAR entpacken" suchen.
Ich habe ganz klar definitiv, dass ich den beiden Swing-Komponenten JEditorPane je ein Text-File und ein HTML-File über die setPage-Methode des JEditorPane übergeben will.
Wenn du so gut bist, wie du scheinen magst, bleibst du nicht so allgemein und gibst oberflächliche Ratschläge, die nicht weiterhelfen, sondern zeigst vielleicht doch konkret was du meinst. Offensichtlich bin ich im Lernprozeß bei Java.
Stattdessen erzeugst du mit deinen Ratschlägen das Gegenteil.
Oder du benutzt gleich Files.copy(InputStream, Path).
Eine weitere Möglichkeit wäre ein Installer, der beim ersten Start alles entpackt und alle Ordner/Dateien erstellt und dein Programm greift einfach nur darauf zu.[/QUOTE]
Du suchst offensichtlich eine Möglichkeit, um die Daten aus dem JAR in dein Programm zu bekommen.
Wie groß sind die Dateien?
Wird zur Laufzeit noch auf sie zugegriffen oder nur ein Mal beim Start?