Resourcen im Jararchiv nicht abrufbar

MARJAVA

Aktives Mitglied
Hallo zusammen,
ich habe gerade ein kleines Problem bei meinem Programm mit meinen resourcen im Jar-Archiv.
über die gewohnte Methode mit dem Classloader habe ich die resource in einem Ordner im Klassenpfad liegend eingebunden. Und doch sucht er nach der Erstellung der Jardatei in einem externen Verzeichnis. Das Programm läuft in eclipse wunderbar, doch nach dem Exportieren sucht er vergeblich nach den Files.
Nun frage ich mich gerade, ob die Files überhaupt im Klassenpad des Jararchives abgespeichert werden?
Habe ich die Dateien ins falsche Verzeichnis gespeichert oder was ist fehlerhaft? Habe neben dem Code noch meine Verzeichnisstruktur angehängt.
Java:
    private void showInfo() {
        JPanel jpAbout = new JPanel();
        jpAbout.setLayout(new BorderLayout());
        JEditorPane editorPaneAbout = new JEditorPane();
        editorPaneAbout.setContentType("text/html");
        String path = "resource/About.html";
       
        File dir = new File(getClass().getClassLoader().getResource(path).getFile().toString()
                .replace("%20", " "));
   
        try {
            URL urlAbout =dir.toURI().toURL();
            System.out.println(urlAbout);

            editorPaneAbout.setPage(urlAbout);
        } catch (MalformedURLException e) {
            logger.error(getClass() + " Methode Drucken", e);
            e.printStackTrace();
        } catch (IOException e) {
            logger.error(getClass() + " Methode Drucken", e);
            e.printStackTrace();
        }
        jpAbout.add(BorderLayout.CENTER, editorPaneAbout);
        JInternalFrame jifAbout = new JInternalFrame("Info", false, true);
        jifAbout.setBounds(170, 140, 300, 220);
        jifAbout.setVisible(true);
        Container contentPaneAbout = jifAbout.getContentPane();
        contentPaneAbout.add(jpAbout);
        jlp.add(jifAbout, JLayeredPane.POPUP_LAYER);
    }
 

Anhänge

  • Verzeichnisstruktur.JPG
    Verzeichnisstruktur.JPG
    39,3 KB · Aufrufe: 33

Thallius

Top Contributor
Also bei mir sieht so ein Elipse Projekt komplett anders aus. Da gibt es so Verzeichnisse wie src, lib, bin, resources etc...
 

Janrupf

Mitglied
Oft verursacht eclipse hier probleme weil es classloader überschreibt wenn die datei exportiert wird. Öffne die fertige jar mal mit einem Zip viewer und schau ob die dateien noch da sind. Desweiteren ist es übersichtlicher Klass.class.getResource zu nehmen.
 

MARJAVA

Aktives Mitglied
Also habe eclipse das noch mal korrekt verklickern müssen, dass die Resourcen vom system erkannt werden. Das funktioniert jetzt bzw. sind die Files nun in der jar-Datei.

Leider sucht das Programm nun während der Laufzeit die Files nicht in der Jar-Datei sondern im Relativen Pfad (den ich bei der Programmierung angab) vom Verzeichnis der Jar-Datei aus. Leider bleibt das ein externes Verzeichnis, in dem er sucht.
Hat die Methode denn ein Problem. Wieso wird sie überschrieben. Ich möchte das der Code dafür sorgt die Datei im Archiv zu suchen. Was kann ich denn dafür tun?

Ich habe in meinem Eclipse nur das src-Verzeichnis, in der sich alles verzweigt.
 

AndyJ

Bekanntes Mitglied
In deinem Code verlangst du explizit nach einem File. Das funktioniert in Eclipse, denn da liegen die Resourcen ja im Filesystem. Wenn du aber ein Jar-Archiv aus deinem Projekt machst, sind die Resourcen Teil des Archivs. Probiere mal folgendes:

Code:
InputStream inputStream = <DeineKlasse>.class.getClassLoader().getResourceAsStream(path);
// hier vom inputStream lesen ...

Das sollte funktionieren.

Cheers,
Andy
 

mrBrown

Super-Moderator
Mitarbeiter
Da du eine URL brauchst, warum konvertierst du die URL zu einem File zu einem String zu einer URI zu einer URL, anstatt einfach bei der URL zu bleiben?

Also statt:
Java:
 File dir = new File(getClass().getClassLoader().getResource(path).getFile().toString()
                .replace("%20", " "));
URL urlAbout =dir.toURI().toURL();
einfach:
Java:
URL urlAbout = getClass().getClassLoader().getResource(path);
 

MARJAVA

Aktives Mitglied
@Andij:
An meiner Codestelle an der ich meine Resource in das Zielverzeichnis kopiere funktioniert die Anweisung mit dem InputStream einwandfrei, danke

@mrBrown:
An meiner Codestelle, an der ich die Datei als URL-Pfad benötige brauchte ich die Anweisung getResource(). Hier war ich etwas zu umständlich. Doch das zeigt mir, dass auch die Anweisung als File funktioniert. Danke
 

mrBrown

Super-Moderator
Mitarbeiter
An meiner Codestelle, an der ich die Datei als URL-Pfad benötige brauchte ich die Anweisung getResource(). Hier war ich etwas zu umständlich. Doch das zeigt mir, dass auch die Anweisung als File funktioniert. Danke
Ich hab ehrlichgesagt keine Ahnung, was du damit sagen willst ´:D

Die Variante mit File kann funktionieren, aber muss man bei dem umkonvertierten immer auf Sonderzeichen etc achten, wie zB das ' '/%20
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
J Resourcen waehrend der Laufzeit aendern? Allgemeine Java-Themen 9
M Input/Output Mehrere Bilder aus Resourcen auslesen Allgemeine Java-Themen 8
Grejak 2D-Grafik Resourcen laden Allgemeine Java-Themen 4
multiholle Resourcen aus Jar-Archiv laden Allgemeine Java-Themen 5
KrokoDiehl Viele JARs und deren Resourcen Allgemeine Java-Themen 9
DeeDee0815 Resourcen in JARs auslagern Allgemeine Java-Themen 4
oliver1974 Zugriff auf externe .class Dateien (und resourcen) aus JAR Allgemeine Java-Themen 11
S Resourcen sparend Allgemeine Java-Themen 5
S classloader + jar + resourcen in dem jar Allgemeine Java-Themen 4
K Problem mit ClassLoader - Laden von Resourcen aus Jar's Allgemeine Java-Themen 14
N Resourcen aus jar Datei. Allgemeine Java-Themen 5
Chris_1980 Bilder u. Objekte in JarArchiv speichern Allgemeine Java-Themen 2
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
kodela Textfeld nicht rechteckig Allgemeine Java-Themen 10
G Doppelklick auf Javaprogramm klapt nicht Allgemeine Java-Themen 1
W Timer terminiert nicht Allgemeine Java-Themen 5
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
W Überflüssige Deklaration vermeiden...war da nicht mal was? Allgemeine Java-Themen 3
N lwjgl kann textureSampler nicht finden Allgemeine Java-Themen 4
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
T .Jar kann man nicht ausführen Allgemeine Java-Themen 18
P JDK nicht installiert in Net Object Fusion Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Regex schlägt nicht an Allgemeine Java-Themen 10
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
OnDemand ApacheCommon FTP Client zuckt nicht Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
T Testing JUnit5: try ... catch arbeitet nicht sauber Allgemeine Java-Themen 6
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
OnDemand MemoryLeak nicht zu finden Allgemeine Java-Themen 26
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
OnDemand XML desializing Attribute bringt nicht erwartetes Ergebnis Allgemeine Java-Themen 16
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
Tiago1234 Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 38
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
I "Neues" Lizenzmodell Oracle - JRE nicht mehr zur Redistribution freigegeben? Allgemeine Java-Themen 16
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Blender3D Alte Beiträge nicht mehr vorhanden Allgemeine Java-Themen 6
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Micha43 Applet *.jar läuft nicht auf dem Mac Allgemeine Java-Themen 8
M Warum bekommen ich den Result nicht ? Allgemeine Java-Themen 17
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
P Karate API Test läuft nicht durch . initializationError Allgemeine Java-Themen 21
N nicht static und auch nicht new Allgemeine Java-Themen 3
Z macOS java konnte nicht entfernt werden xpc verbindungsfehler Allgemeine Java-Themen 4
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
N Gierigen Regex in nicht-gierigen umwandeln Allgemeine Java-Themen 4
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
AleXusher Hauptklasse startlösung konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 1
G @PostConstruct Annotation nicht mehr gültig ? Allgemeine Java-Themen 7
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
T Projekt baut nicht mehr/lässt sich nicht mehr ausführen Allgemeine Java-Themen 6
izoards log4j2 will nicht.... Allgemeine Java-Themen 15
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
1Raini Java if-Abfrage funktioniert nicht! Allgemeine Java-Themen 3
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
I serialVersionUID - explizit vergeben oder nicht? Allgemeine Java-Themen 6
MiMa Vorhandenes das nicht existiert?? Allgemeine Java-Themen 7
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
O Jar lässt sich auf bestimmten Pc nicht starten Allgemeine Java-Themen 18
T Fremde Typen mockt man nicht? Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
B neuroph hält beim XOR lernen nicht an Allgemeine Java-Themen 13
kodela JDialog zeigt Text nicht an Allgemeine Java-Themen 5
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
D Twitch API mit HttpURLConnection läuft nicht? Allgemeine Java-Themen 0
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
R Threads Clip loop loopt nicht Allgemeine Java-Themen 2
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
OnDemand JMS Messages nicht abgeholt Allgemeine Java-Themen 0
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
A Mp3 Player funktioniert nicht Allgemeine Java-Themen 0
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben