Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14)

Sherry

Aktives Mitglied
Hallo,

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:
Java:
try {
            licenseEditor.setContentType("text/plain");
            licenseEditor.setPage("file:resources/license");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
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.

Grüße

Sherry
 
Zuletzt bearbeitet:

Sherry

Aktives Mitglied
Ok,

gibt es dazu Literatur oder Beispiele im Web, so dass ich das verstehen und nachvollziehen kann? das ist mir so noch zu allgemein gehalten.
 

Sherry

Aktives Mitglied
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.
 

Gucky

Top Contributor
Es zwingt dich niemand die ganzen Automatismen zu benutzen ;)

Die Klassen werden natürlich selber erzeugt oder willst du deinen Code in Bytecode übersetzen?

Du nimmst einfach irgendeine Klasse.getClass().getRessource...
 

Sherry

Aktives Mitglied
Du nimmst einfach irgendeine Klasse.getClass().getRessource...

Das ist mir immer noch zu allgemein gehalten.
Wie bereits geschrieben
Java:
try {
            licenseEditor.setContentType("text/plain");
            licenseEditor.setPage("file:resources/license");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
funktioniert mit Intellij IDE und einem Jar-File unter Eclipse-Export.

Wo soll dieser Kladderadasch "Klasse.getClass().getRessource..." hin??
 

Gucky

Top Contributor
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.
 

Sherry

Aktives Mitglied
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?
 

Gucky

Top Contributor
Wie willst du die Dateien denn sonst von der Festplatte ins Programm kriegen? Das ist mit Dateien, die daneben liegen nicht anders.
 

Sherry

Aktives Mitglied
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:
Java:
 try {
            aboutEditor.setPage("resources/about.html");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
Java:
try {
            licenseEditor.setContentType("text/plain");
            licenseEditor.setPage("resources/license");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
Logischerweise setze ich jetzt in die setPage-Methoden
Java:
try {
            aboutEditor.setPage(getClass().getResource("resources/about.html"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }

Java:
try {
            licenseEditor.setContentType("text/plain");
            licenseEditor.setPage(getClass().getResource("resources/license"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }

Dann habe ich eine IOException "invalid url" und leere JEditorPanes.

Baue ich die Codes so
Java:
try {
            aboutEditor.getClass().getResource("resources/about.html");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
Java:
try {
            licenseEditor.setContentType("text/plain");
            licenseEditor.getClass().getResource("resources/license");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
entfallen die Exceptions, dafür sind die JEditorPanes immer noch leer.

Die setpage-Methode will einen Pfad (URI) haben, aber wie soll das mit der Methode getResource gehen?
 

Sherry

Aktives Mitglied
Dann musst du die Dateien zuerst entpacken oder getRessourceAsStream(...) verwenden.
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.
 

Gucky

Top Contributor
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.
 

Sherry

Aktives Mitglied
Wenn du dir keine Mühe gibst meine Aussagen zu verstehen ist es klar, dass du nicht hinter ihren Sinn kommst.
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.
Mit dem Unterschied, dass du spezielle Methoden zum Einlesen verwenden musst und Schreiben überhaupt nicht geht,
Das magst du noch verstehen, für Andere sind alle Wege offen zu Interpretation, was du sagen wolltest.
Du könntest zum Beispiel nach "Dateien zur Laufzeit aus JAR entpacken" suchen.
Wirklich? Da kommen aber ganz andere Ergebnisse:
1 Ergebnis (0,25 Sekunden)
Suchergebnisse

Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14 ...
Java lernen, Java programmieren - Java-Forum.org › ... › Java Basics - Anfänger-Themen

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]
 

Gucky

Top Contributor
Suchen bei Google. Nicht im Forum. ;)

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?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
L Resourcen laden klappt nicht Java Basics - Anfänger-Themen 2
M Resourcen schonnendes Zeitabfragen Java Basics - Anfänger-Themen 11
Burny91 Resourcen mit relativen Pfadangaben laden Java Basics - Anfänger-Themen 2
A Resourcen Java Basics - Anfänger-Themen 2
M Resourcen richtig laden (Bild, Musik) Java Basics - Anfänger-Themen 2
D JWS - Resourcen aus eigenen Jar laden? Java Basics - Anfänger-Themen 3
K Jar Export resourcen einbindung -> Fat Jar Java Basics - Anfänger-Themen 8
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
I Dateien aus dem Resource Folder laden Java Basics - Anfänger-Themen 2
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
A Zwei XML-Dateien Mergen Java Basics - Anfänger-Themen 14
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
LetsSebi Dateien werden nicht in Zip gespeichert Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
MiMa log4j als separate Dateien in Schleife? Java Basics - Anfänger-Themen 6
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
S Lese- / Schreibfähigkeit von Dateien sicherstellen Java Basics - Anfänger-Themen 1
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
J Java findet plötzlich die Dateien im Projekt nicht mehr. Java Basics - Anfänger-Themen 12
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
MiMa Formate für Dateien und Pfade? Java Basics - Anfänger-Themen 1
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
L Richtige Reihenfolge der Dateien Java Basics - Anfänger-Themen 5
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
J Logging erzeugt zwei dateien.... Java Basics - Anfänger-Themen 7
A Dateien Verschieben Java Basics - Anfänger-Themen 1
M Mehre Dateien parallel kopieren mit Multithreading Java Basics - Anfänger-Themen 8
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
J Java-Dateien lassen sich nicht editieren Java Basics - Anfänger-Themen 46
E FTP Dateien hochladen Java Basics - Anfänger-Themen 3
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
Korvinus Vergleichen von 2 csv-Dateien Java Basics - Anfänger-Themen 2
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
M "substring()" mit Dateien und Pfadangaben Java Basics - Anfänger-Themen 5
Voreck Jar Dateien Standart programm ändern Java Basics - Anfänger-Themen 12
K Dateien aus Source-Package verwenden Java Basics - Anfänger-Themen 10
B Dateien aus dem "resource" - Folder kopieren in Verzeichnis Java Basics - Anfänger-Themen 9
B Kopieren von Dateien mit Adminberechtigungen Java Basics - Anfänger-Themen 14
F Threads ftp4j, viele Dateien upload Java Basics - Anfänger-Themen 5
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
X Dateien direkt hintereinander schreiben, Dateiname Java Basics - Anfänger-Themen 25
G Messwerte in 2 Dateien schreiben Java Basics - Anfänger-Themen 20
C Verarbeitung von sehr großen Dateien Java Basics - Anfänger-Themen 52
F Input/Output Dateien lesen/schreiben Java Basics - Anfänger-Themen 1
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
K Dateien lesen | IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
Bluedaishi for schleife um Dateien wieder zusammen zu fügen Java Basics - Anfänger-Themen 11
J Dateien für anderen User "mitgeben" Java Basics - Anfänger-Themen 1
S Dateien mit Java verschieben Java Basics - Anfänger-Themen 6
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
E Dateien werden nicht gelöscht Java Basics - Anfänger-Themen 10
S Class Dateien decompilieren Java Basics - Anfänger-Themen 4
T Fehler beim Schreiben in Dateien! Java Basics - Anfänger-Themen 4
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8
Z Mehrere XML-Dateien zu einer zusammenfügen Java Basics - Anfänger-Themen 3
K JAR Dateien einbinden - funkt nicht wie es sollte... Java Basics - Anfänger-Themen 22
M Threads nio Dateien kopieren, Threads und Gui Java Basics - Anfänger-Themen 0
J *.sql Dateien in Java Java Basics - Anfänger-Themen 1
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3
P Compiler-Fehler .java Dateien kompilieren und .class Dateien zur .jar Java Basics - Anfänger-Themen 4
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
M Input/Output Arbeiten mit extrem vielen Dateien Java Basics - Anfänger-Themen 8
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
N tar-Dateien Java Basics - Anfänger-Themen 6
B Methoden Dateien konvertieren Java Basics - Anfänger-Themen 3
L Dateien speichern/auslesen Java Basics - Anfänger-Themen 5
M Input/Output Probleme beim Parsen von CSV und TXT Dateien Java Basics - Anfänger-Themen 7
P Wiedereinstieg und kann keine Dateien mehr öffnen... Java Basics - Anfänger-Themen 13
F Classpath Dateien einbinden und Classpath durchsuchen Java Basics - Anfänger-Themen 2
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
U Best Practice Nicht-permanente Links auf Dateien Java Basics - Anfänger-Themen 5
B In welchem (Default) Pfad erstellt Java Dateien? Java Basics - Anfänger-Themen 4
I Methoden zum lesen und speichern von Dateien Java Basics - Anfänger-Themen 2
B .ut dateien ignorieren und fortsetzen Java Basics - Anfänger-Themen 9
R Ressourcen in JAR-Dateien Java Basics - Anfänger-Themen 2
J jar Dateien global erreichbar machen Java Basics - Anfänger-Themen 3
L Zusammenführen mehrerer .txt Dateien Java Basics - Anfänger-Themen 4
M Dateien erstellen/ bearbeiten/ lesen Java Basics - Anfänger-Themen 9
S Dateien in RAM kopieren und ausführen? Java Basics - Anfänger-Themen 4
O Java Dateien verschlüsseln? Java Basics - Anfänger-Themen 22
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
B Dateien kopieren, entpacken, XML auslesen! Java Basics - Anfänger-Themen 7
B Dateien Verschieben! Java Basics - Anfänger-Themen 8
B ältere Dateien verschieben Java Basics - Anfänger-Themen 3
G Erste Schritte Nach bestimmten Dateien suchen und dann in die Registry schreiben. Java Basics - Anfänger-Themen 6
J Laden von Dateien Java Basics - Anfänger-Themen 19
I Xml dateien zusammenfügen Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben