Bilderaufruf aus .jar

juligo

Mitglied
Hallo,
ich bin am verzweifeln. Ich durchstöbere schon etliche Zeiten das Internet nach einer Lösung. Eig. kann es nicht so schwer sein. Aber ich finde meinen Fehler nicht.

Ich möchte ein .jar-Archiv erstellen von einer Klasse die sich Bilder, Icons u. ä. von .gifs auf meiner Festplatte lädt. Das .jar-Archiv habe ich schon manuell sowie mit dem Java-Editor "Java-Editor 9.14k" von Gerhard Röhner erstellt. Jedoch waren da nie die Bilder drin und so habe ich den Ordner /Img in mein Archiv mit WinRar hinzugefügt. habe keine Funktion gefunden wie ich direkt angeben kann diesen Ordner doch bitte mit aufzunehmen.

Meine Klasse ruft die Bilder nicht über absolute Pfadangaben auf sondern über den Code

Java:
java.net.URL url = getClass().getResource("");
      String temp = url.toString();
      Object c = alz.get(0);  // holt sich das erste Element einer ArrayList
      String data = c.toString(); //wandelt dieses in einen String um
      String pf = temp+"cardset/"+data+".gif";
      pf = pf.replace("file:/", "");
      ii = new ImageIcon(pf);
      System.out.println(pf);

das pf = pf.replace("file:/", "");
habe ich verwendet da mein Pfad wie folgt ausgegeben wurde "file:/C/Beispiel/cardset/he10.gif"
so hat er das .gif nicht aufgerufen und durch entfernen des "file:/" lief es. Beim .jar habe ich beide Varianten ausprobiert, also pf = pf.replace(...) auskommentiert und mal nicht.

Hat wer eine Idee, warum es im .jar Archiv mit dem Bilderaufruf nicht klappt, aber mit dem ausführen der reinen .java Datei schon?
 

Michael...

Top Contributor
Hab ich das richtig verstanden, dass die Bilder im jar-File liegen?

Bsp. Bild liegt im Archiv unter dem Pfad
img/meinBild.png
Java:
ImageIcon img = new  ImageIcon(getClass().getResource("/img/meinBild.png"));
 

juligo

Mitglied
Ja genau, die Bilder liegen im Jar-Archiv

also zum Beispiel

test.jar enthält die test.class sowie den Ordner Img der wiederrum die ganzen .gif' s enthält.
Mit
Java:
getClass().getResource(...);
hab ich es ja schon probiert. Sieht bei mir zwar umständlicher aus, aber im Prinzip dürfte es das ja sein. Aber ich versteh nicht warum das nicht klappt.
 
M

MiDniGG

Gast
Also getClass().getResource("/pfad/zum/Bild.png"); ist der normale Weg um Bilder zu laden.
Bist du sicher, dass der Ordner jetzt auch im jar enthalten ist?

Wie sieht da denn die Ordnerstruktur aus?
Code:
root
|_src
   |__img
   |__"klassen"

Wenn so dann sollte es gehen... src ist nicht zwingend aber schön :)
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
kompilierte Klassen im src-Verzeichniss? Ist schon ein bisschen merkwürdig ;-)

Wenn die Situation, wie in meinem letzten Post beschrieben ist, dann funktioniert auch die Codezeile darunter. - das jar File muss natürlich im CLASSPATH aufgeführt sein, wovon ich aber ausgehe, wenn darin auch der Programmcode enthalten ist.
 

juligo

Mitglied
Also so sieht das "Innere" meiner .jar-Datei aus.
(META-INF enthält das Manifest. Und nur eine .class Datei der Übersichtlichkeit halber (also für den Screenshot, nicht für den Aufbau der Klasse(n)))



Habe gerade mal die .java datei spaßeshalber und die zugehörigen Bildordner verschoben. Da kam von Windows eine Exception er würde die Datei die ich in meinem Programm einlese (cards.txt) nicht finden. Da hat er aus Leerzeichen immer "%20" gemacht.
Ich werd mich da heut Abend nochmal dran setzen. Irgendwas habe ich scheinbar nicht beachtet oder übersehen.

Danke für die Mühe
 

Neue Themen


Oben