Bilder JAR-kompatibel machen

Status
Nicht offen für weitere Antworten.

hdi

Top Contributor
Hey, zur Zeit lade ich meine GUI-Bilder wie folgt ins Programm:

Java:
	private static Map<String, BufferedImage> pics;

	static {
		pics = new HashMap<String, BufferedImage>();
		String dirPath = "icons/";
		File imgDir = new File(dirPath);
		File[] pics = imgDir.listFiles();
		for (File pic : pics) {
			String name = pic.getName();
			try {
				BufferedImage img = ImageIO.read(new File(imgDir, name));
				IconPool.pics.put(name, img);
			} catch (IOException e) {
				new ErrorDialog("Fehler beim Initialisieren der GUI-Icons", e);
				/* This is a fatal error, we exit */
				System.exit(-1);
			}
		}
	}

Die Bilder liegen in dem Ornder "icons", der liegt direkt auf der Haupt-Ebene meines Java-Projektes. Funzt solange ich das Prog über Eclipse starte, aber wenn ich ein JAR-Archiv draus mache und es starte, findet er die Bilder nicht.

Inwiefern muss ich das nun ändern?

Dank euch
 

hdi

Top Contributor
Hey, danke aber ich hab noch ein Problem damit:

1) Muss ich die Bilder dann in ein Package legen? Ich hab versucht auf einen Ordner zu zugreifen im Proejtk, also kein Package, und das ging nicht. Package geht, fände aber einen Ordner besser..

2).. auch weil ich nicht recht weiß wie ich über alle Elemente in einem Package drübergehen kann? Bei nem Ordner kann ich per listFiles() und dann for-each machen, um die Bilder zu erzeugen. Aber bei nem Package :bahnhof:
 

musiKk

Top Contributor
1) Ein "normaler" Ordner geht auch. Da ein Package auch nur ein Ordner ist, gibts da aber keinen Unterschied.
2) Du kannst das Jar über einen ZipInputStream oder als ZipFile lesen (geht auch mit den entsprechenden Jar...-Klassen, aber wenn man das Manifest nicht braucht, ist das eigentlich unnötig). Da ist nur manuelles Durchiterieren möglich, in einem Zip gibt es keine Ordnerstruktur, sondern nur flache Entries. Prinzipiell bin ich aber der Meinung, dass man wissen sollte, was im Jar ist. Dynamische Dateisammlungen sollten nach draußen. Immerhin ist ein Jar nicht zur nachträglichen Bearbeitung gedacht. Das ist eine fertige Distribution an Programmen und Daten. Ist aber sicher Geschmackssache; wie erwähnt ist es ja nicht unmöglich.
 

hdi

Top Contributor
Also wenn ich's in nen Ordner tue geht es nicht:

Java:
ImageIO.read(IconPool.class.getResourceAsStream("icons/trayicon.png"));

Die Klasse IconPool liegt im src-Ordner (default package, aber auch wenn ich's in ein anderes package tu geht es nicht), und auf der Ebene des src-Ordners hab ich den icons-ordner. Habs auch schon mit "/icons/trayicon.png" und "../icons/trayicon.png" probiert.

Aber er sagt mir

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)

Da ist nur manuelles Durchiterieren möglich
Und was soll ich iterieren? Genau das weiss ich ja nicht, ich könnte jetzt nur eine read-Anweisung für jedes Bild explizit reinschreiben, und immer wenn ich ein Bild in den Ornder einfüge, lösche oder umbenenne müsste ich das im Code anpassen.
 

musiKk

Top Contributor
und auf der Ebene des src-Ordners hab ich den icons-ordner.

Ja, im Projekt ist das was anderes. Bisher gings ja nur um Jar-Files. Den src-Ordner hast Du wohl in Eclipse oder Netbeans. [c]getResourceAsStream()[/c] gibt die Anfrage an den Classloader weiter und der schaut im Classpath. Der müsste dann wohl angepasst werden.

Und was soll ich iterieren? Genau das weiss ich ja nicht

Dann mal in die API-Dokumentation zu den beiden von mir erwähnten Klassen schauen...
 

hdi

Top Contributor
Ah ich hatte mich verlesen, ich dachte das mit dem Iterieren bezieht sich nicht auf die Vorgehensweise mit dem Zip/Jar. Aber mir sind noch immer 2 Dinge nicht klar:

1) Hab bislang noch nie irgendwas im ClassPath gemacht. Was muss ich dort erweitern?
2)
Prinzipiell bin ich aber der Meinung, dass man wissen sollte, was im Jar ist. Dynamische Dateisammlungen sollten nach draußen.
Was meinst du jetzt mit "draußen"? Also entweder ich mach es dynamisch, was mir viel besser gefallen würde, weil ich eben nicht jede Kleinigkeit an den Icons im Code anpassen muss. Oder ich mach es "draußen" ;) Aber da weiss ich nicht was du meinst.
 

musiKk

Top Contributor
Tbh kann ich Dir beim ersten nicht viel genauer helfen, wie man das am elegantesten löst. Zumindest bei Eclipse ist es so, dass der Inhalt des Properties [c]java.class.path[/c] das bin-Verzeichnis des aktuellen Projektes enthält. Alles, was im src-Verzeichnis ist, kommt auch ins bin-Verzeichnis, darum werden Ressourcen, die in Packages abgelegt werden, auch per [c]getResourceAsStream()[/c] gefunden. Ein Ordner, der neben dem src-Verzeichnis erstellt wird, liegt neben bin und damit nicht im Classpath. Entweder, man fügt nun dieses Verzeichnis zum Classpath hinzu oder packt doch alles in den src-Folder. Die wenigen Male, wo ich das brauchte, habe ich mich für letzteres entschieden. Es ist ja auch in Eclipse möglich, mehrere src-Folder zu erzeugen.

Mit "draußen" meinte ich außerhalb des Jars; also ein Verzeichnis, was daneben liegt. Dort kann man ja wieder mit ganz normalen File-Operationen arbeiten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
B Dateien / Bilder von "webapp" Ordner bekommen? Allgemeine Java-Themen 1
B Java Mail: Unterscheidung bei Attachments und eingefügte Bilder in Email Allgemeine Java-Themen 18
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
J Bilder lassen sich nicht importieren Allgemeine Java-Themen 3
S Bilder/Grafiken (zb: ".jpg") gestaucht zu Anzeige bringen Allgemeine Java-Themen 4
C Position von Pixeln in Bilder auslesen Allgemeine Java-Themen 2
The Pi NetBeans Bilder in Jar Datei werden nicht angezeigt Allgemeine Java-Themen 7
L Bilder innerhalb der JAR Datei Allgemeine Java-Themen 2
A 2 Bilder übereinander legen Allgemeine Java-Themen 5
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
P Datentypen Bilder werden in ausführbarer JAR nicht angezeigt Allgemeine Java-Themen 6
OnDemand Bilder herunterladen Allgemeine Java-Themen 11
Tacofan Bilder in Resource speichern Allgemeine Java-Themen 6
V Input/Output Gif Bilder Animiert aus einer Jar laden Allgemeine Java-Themen 4
F Bilder aus Subpackage entnehmen Allgemeine Java-Themen 2
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
A JTable Bilder Allgemeine Java-Themen 1
P OpenCV mit Java - Bilder in Graustufenbilder umwandeln Allgemeine Java-Themen 2
M Barcode und Bilder in PCL einbinden Allgemeine Java-Themen 0
H Mehrere Bilder aus einer Datei lesen Allgemeine Java-Themen 2
A Bilder vergleichen auf gleichheit oder ähnlichkeit Allgemeine Java-Themen 8
F Java Api Bilder speichern Allgemeine Java-Themen 3
J Bilder in Eclipse überlappen Allgemeine Java-Themen 4
M Bilder aus Excel auslesen Allgemeine Java-Themen 6
S Bilder Zippen Allgemeine Java-Themen 3
Z Bilder aus JAR laden Allgemeine Java-Themen 2
R Exec. Jar läd Bilder nicht! Allgemeine Java-Themen 5
D auf Bilder im Jar-Archiv zugreifen Allgemeine Java-Themen 11
P JAVA Bilder/Videos in Form von Files vergleichen Allgemeine Java-Themen 7
M Input/Output Mehrere Bilder aus Resourcen auslesen Allgemeine Java-Themen 8
K Eclipse Export - Bilder finden Allgemeine Java-Themen 7
K Bilder zerschneiden, stichwort: SLICE Allgemeine Java-Themen 3
M Eclipse Stackoverflow beim Einlesen von großen Bilder in kd Baum Allgemeine Java-Themen 15
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
D Bilder in JFrame anzeigen Allgemeine Java-Themen 5
K Inputstream -> Bilder Allgemeine Java-Themen 23
JAVAnnik Bilder in JLabel Array einfügen Allgemeine Java-Themen 2
A Problem mit Bilder laden mit sum.kern Allgemeine Java-Themen 9
C Bilder speichern Allgemeine Java-Themen 12
Z 2D-Grafik Webcam-Bilder analysieren und manipulieren Allgemeine Java-Themen 8
D Bilder extrahieren aus EPS - Problem mit ASCII85 Allgemeine Java-Themen 2
D Bilder aus externer .jar laden Allgemeine Java-Themen 3
S Swing mit JEditorPane per HTML auf Bilder in JAR zugreifen. Allgemeine Java-Themen 3
F Kleingerechnete Bilder extrem dunkel Allgemeine Java-Themen 2
SuperSeppel13 Bilder auf Anfrage laden - Threading Allgemeine Java-Themen 3
C Bilder rotieren, Denkfehler in der Berechnung? Allgemeine Java-Themen 2
S Mittels eines Applets Bilder generieren die in einer Webseite angezeigt werden..? Allgemeine Java-Themen 8
C Bilder verkleinern und zusammenführen Allgemeine Java-Themen 5
K Transparente Bilder in Bild positionieren und speichern. Allgemeine Java-Themen 5
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
A Beim Kopieren werden Bilder verfälscht Allgemeine Java-Themen 3
O Große Anzahl Bilder laden Allgemeine Java-Themen 7
data89 Bilder mit Java prüfen - suche dringend Hilfe Allgemeine Java-Themen 8
S Bilder aus jarDateien laden Allgemeine Java-Themen 13
R Bilder von flickr runterladen? Allgemeine Java-Themen 3
Fadi Lade Bilder aus einem Jar File Allgemeine Java-Themen 6
D Bilder einer Webseite herunterladen Allgemeine Java-Themen 2
C Externe Bilder in Java-Applet blocken? Allgemeine Java-Themen 2
C Alle Bilder eines binären Arrays ausgeben Allgemeine Java-Themen 3
G Bilder einer Webcam im JFrame anzeigen Allgemeine Java-Themen 5
T Webseiten durchsuchen und Bilder downloaden Allgemeine Java-Themen 4
C Bilder automatisch bearbeiten/manipulieren Allgemeine Java-Themen 2
G Peformance Bilder laden? Allgemeine Java-Themen 3
G Bilder in javadoc einbinden Allgemeine Java-Themen 5
H Bilder werden nicht angezeigt Allgemeine Java-Themen 7
G Bilder skalieren Allgemeine Java-Themen 2
K Bilder mit Java in MS Word einfügen Allgemeine Java-Themen 2
G Bilder werden in .Jar nicht angezeigt! Allgemeine Java-Themen 2
B zwei Bilder miteinander vergleichen Allgemeine Java-Themen 25
N Bilder in DB oder im Filesystem speichern Allgemeine Java-Themen 3
K bilder laden im voraus Allgemeine Java-Themen 7
Chris_1980 Bilder u. Objekte in JarArchiv speichern Allgemeine Java-Themen 2
S Buttons über Bilder? Allgemeine Java-Themen 18
F Mehrere Bilder zu einem Großen zusammenkleben Allgemeine Java-Themen 3
N Auf Bilder / Dateien innerhalb eines jar-Archives zugreifen Allgemeine Java-Themen 2
H Bilder richtig speichern und laden Allgemeine Java-Themen 4
F Bilder als "Thumbnails" laden - Performance Allgemeine Java-Themen 6
TheJavaKid Bilder in die Registries Allgemeine Java-Themen 7
byte Fehlerhafte Bilder reparieren? Allgemeine Java-Themen 11
M Bilder abspielen mit Übergängen Allgemeine Java-Themen 12
G bilder in jar Allgemeine Java-Themen 6
T Bilder schnell in BufferedImage laden Allgemeine Java-Themen 4
T Bilder bearbeiten unglaublich langsam Allgemeine Java-Themen 9
G Bilder für Buttons in JarFile Allgemeine Java-Themen 5
Linad Bilder auf Gleichheit prüfen Allgemeine Java-Themen 6
G Bilder zeichnen und Zoom Funktion Allgemeine Java-Themen 2
G Bilder in JAR-File finden Allgemeine Java-Themen 5
E Warum werden Bilder nicht angezeigt? Allgemeine Java-Themen 3
M GIF-Bilder in JAR-Files Allgemeine Java-Themen 5
M Bilder-Ordner kann im JAR-File nicht gefunden werden Allgemeine Java-Themen 15
M Bilder in ein Array? Allgemeine Java-Themen 3
P Bilder aus Jar Allgemeine Java-Themen 2
D Bilder einlesen, bearbeiten und wieder in Datei schreiben Allgemeine Java-Themen 3
J Problem mit .jar Archiv und Bilder Allgemeine Java-Themen 6
bummerland bilder im jar-archiv? Allgemeine Java-Themen 2
D Code bitte mit 19 stelligen Zahlen kompatibel machen Allgemeine Java-Themen 5
Ebenius Compiler-Fehler Oracle javac 7 nicht kompatibel zu Sun javac 6 Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben