Laden von eingebundenen .png Datein

Luk10

Top Contributor
Grüße,

Ich habe folgendes Problem:

Ich lade mit folgender Methode, .png Grafiken in BufferedImages.

Java:
	public BufferedImage loadSprite(String path) {
		
		BufferedImage source = null;
		
		try {
		
			source = ImageIO.read(new File(path));
			
			
		} catch (Exception e) {
 
			e.printStackTrace();
		
		}
		return source;	
	}

Das funktioniert auch einwandfrei wenn ich

a) Die .class Datei in Eclipse ausführe (als Path reicht hier das Hauptverzeichnis:
Code:
"pics/meineDatei.png"

b) Eine .jar Datei, mit eingebundenen Ordner (pics), jedoch muss ich dann
Code:
"C:/MeineDatein/pics/meineDatei.png"
angeben

Was ich will ist a), nur auch für die .jar Datei
Kann mir jemand sagen, wieso das nicht funktioniert und was ich ändern muss?

Danke,
-Luk10-
 

Marco13

Top Contributor
Aus einer JAR-Datei auf eine "File" zugreifen sollte man nicht (wundert mich, dass das so überhaupt geht). Man kann ImageIO.read auch einen Stream übergeben. In diesem Fall (sowohl bei einer Datei im .classes-Verzeichnis, als auch in einer Jar) kann man sich die Daten mit sowas wie
getClass().getResourceAsStream("/pic/bla.png");
holen (ggf. mal bei der Doku gucken, ich muss mit dem Pfad auch immer dreimal überlegen :oops: )
 

Luk10

Top Contributor
Wird denn der Ordner "pics" beim .jar Exportieren automatisch richtig angegeben? Bzw. passt es wenn ich der Ordner pics in dem Ordnermit scr und bin liegt?

Ich kenne mich leider mit Streams (I/O und sowas ebenfalls) nicht besonders gut aus. Kann mir das jemand gleich in der Methode verbesseren, oder mir einen geeigneten Link geben, wo ich das lernen kann?

Danke,
-Luk10-
 

Marco13

Top Contributor
Streams verwendet man meistens wie Files, sind nur abstrakter weil sie sich auch auf die Daten einer JAR beziehen können. Die Zugriffe auf die Dateien in der JAR sind, wenn man z.B. getResourceAsStream verwendet, relativ zum Ordner in dem sich die Klassen befinden, d.h. wenn du was hast wie
classes/pics/dasBild.png
dann sollte man wie oben angedeutet drauf zugreifen können. Beim Eclipse-JAR-Export werden die Dateien mit in die JAR gepackt (kann man aber in JAR-Export-Dialog nochmal prüfen).
 

Luk10

Top Contributor
Java:
try {
			
			source = ImageIO.read(getClass().getResource(path));
			
		} catch (Exception e) {
			
			System.err.println("Exception beim Laden des Images");
			
		}

Funktioniert nicht, da bekomme ich die Exception ... (Nur in Eclipse getestet)

Java:
try {
			
			source = ImageIO.read(getClass().getResourceAsStream(path));
			
		} catch (Exception e) {
			
			System.err.println("Exception beim Laden des Images");
			
		}

Funktioniert auch nicht, gibt auch die Exception aus (Nur in Eclipse)

Vielleicht stimmt meine Ordner-Struktur nicht?
Habe:

Workspace
-Project
--bin
--scr
--pics
---meinBild.png

Wieso funktioniert das beides nicht?
Danke,
-Luk10-

EDIT: Habs auch als .jar getestet ... kein Erfolg
 
Zuletzt bearbeitet:

Luk10

Top Contributor
Wie kann ich das machen, ohne dass mir Eclipse den Hals umdreht? Habe in meinem Package-Explorer den bin Ordner nicht drin und weiß auch nicht wie ich das sonst anstelle, ohne dass entweder das Projekt aus dem Workspace entfernt wird, oder der (manuell) erstellte Ordner im bin Ordner gelöscht wird.

Danke,
-Luk10-
 

Michael...

Top Contributor
verschiebe das ganze im Datei Explorer in den src Ordner, wenn Du dann in Eclipse im Package Explorer F5 drückst sollte das Package pics parallel zu Deinen anderen packages zu sehen sein.
 
G

Guest2

Gast
Moin,

sauberer: Lege in Eclipse einen neuen zusätzlichen src Folder an, z.B. "resources" und kopiere die Bilder da rein. (Rechte Maustaste aufs Projekt -> New -> Source Folder)

Gruß,
Fancy
 

Marco13

Top Contributor
(Ja, sie ins bin kopieren sollte erstmal nur ein Test sein - wenn das jetzt geklappt hätte: Im JAR-Export-Dialog gibt's da auch extra die Einstellung, dass resources mit exportiert werden sollen)
 
G

Guest2

Gast
(Sollte auch keine Kritik sein, sondern nur ein Hinweis an den TO, dass es das auch gibt.
(Immerhin den Hinweis, den einen direkt als "src/main/java" und den anderen als "src/main/resources" zu benennen habe ich mir verkniffen ;)))

Gruß,
Fancy
 
G

Gastredner

Gast
sauberer: Lege in Eclipse einen neuen zusätzlichen src Folder an, z.B. "resources" und kopiere die Bilder da rein. (Rechte Maustaste aufs Projekt -> New -> Source Folder)
Oder einfach den vorhandenen Ordner "pics" dem Build Path als Source Folder hinzufügen, geht noch einfacher.
 

Marco13

Top Contributor
Wenn sie im src liegen, werden sie beim compilieren ggf. automatisch in den bin-Ordner kopiert. DA werden sie dann gebraucht, deswegen hatte ich gesagt, dass du sie (zum testen) erstmal da hin kopieren könntest. "Dauerhaftere" Lösungen wurden ja jetzt schon angedeutet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
DeBoiJoshua 2D-Grafik Gif Animation will nicht laden AWT, Swing, JavaFX & SWT 1
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
H Images laden nicht AWT, Swing, JavaFX & SWT 14
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
F JButtons neu laden AWT, Swing, JavaFX & SWT 4
M AWT Laden von Sprites AWT, Swing, JavaFX & SWT 3
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
S JavaFX Laden des Inhalts AWT, Swing, JavaFX & SWT 1
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
I Scene Builder kann .fxml nicht mehr laden AWT, Swing, JavaFX & SWT 3
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
X Java Fxml laden AWT, Swing, JavaFX & SWT 4
G Properties automatisch laden AWT, Swing, JavaFX & SWT 10
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
L Graphik nach 100 ms neu laden AWT, Swing, JavaFX & SWT 1
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
S JavaFX Fenstergrösse automatisch Speichern und Laden AWT, Swing, JavaFX & SWT 4
M Datenbanksätze in ToolTip laden AWT, Swing, JavaFX & SWT 4
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
I Zufallsbilder laden AWT, Swing, JavaFX & SWT 2
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
X JFrame erst nach dem Laden sichtbar stellen AWT, Swing, JavaFX & SWT 8
N FXML Dokument laden AWT, Swing, JavaFX & SWT 1
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
B Ressourcen laden beim Ausführen der .jar nicht schnell genug AWT, Swing, JavaFX & SWT 2
V JavaFX - fxml-Datei laden (neben CSS) AWT, Swing, JavaFX & SWT 2
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
J Swing Bild laden, Kreise drin malen, Schreiben AWT, Swing, JavaFX & SWT 2
M Swing Elemente im Dialog neu "laden". AWT, Swing, JavaFX & SWT 6
K JLabel nachträglich laden AWT, Swing, JavaFX & SWT 6
T Modell als XML Speichern / Laden AWT, Swing, JavaFX & SWT 9
B Hintergrund laden AWT, Swing, JavaFX & SWT 3
V Laden einer Bitmap / Eclipse-Problem? AWT, Swing, JavaFX & SWT 4
S Font laden, Wort zeichnen und animieren..? AWT, Swing, JavaFX & SWT 2
G Objekte in und aus einer JTable laden AWT, Swing, JavaFX & SWT 5
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
V Persistentes Objekt laden Progressbar AWT, Swing, JavaFX & SWT 7
Luk10 Fragen zum Laden von Fonts AWT, Swing, JavaFX & SWT 4
B Swing Laden von serialisierten Objekten (invalid type code AC)) AWT, Swing, JavaFX & SWT 3
N Swing BufferedImage neu laden AWT, Swing, JavaFX & SWT 10
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
T Swing Laden eines Icons auf JButton liefert NullPointerException AWT, Swing, JavaFX & SWT 8
C 2D-Grafik bild aus resource folder laden AWT, Swing, JavaFX & SWT 3
R Image laden sehr langsam AWT, Swing, JavaFX & SWT 7
S Objekt einmal laden zweimal anzeigen 3d AWT, Swing, JavaFX & SWT 6
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
P Text-Vorschläge für JTextField aus ner Liste laden AWT, Swing, JavaFX & SWT 8
J Bild aus Datei in BufferedImage laden AWT, Swing, JavaFX & SWT 4
S GUI per XML zur Laufzeit laden AWT, Swing, JavaFX & SWT 5
P 2D-Grafik Fehler beim Laden eines Bildes AWT, Swing, JavaFX & SWT 25
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
B Problem beim laden von Bild mit getResource() AWT, Swing, JavaFX & SWT 3
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
M Bild aus .jar Archiv laden geht nicht AWT, Swing, JavaFX & SWT 6
H Swing HTML in einem JEditorPane zeilenweise hinzufügen ohne Inhalt jedes Mal neu zu laden AWT, Swing, JavaFX & SWT 4
D Swing JTable in Datei speichern und laden AWT, Swing, JavaFX & SWT 3
E Laden von Bilddateien erzeugt OutOfMemory Error AWT, Swing, JavaFX & SWT 6
F Swing Zur Laufzeit Bild laden und auf JPanel anzeigen AWT, Swing, JavaFX & SWT 4
H Applet - Hilfedateien im Browser öffnen / eine Webseite laden AWT, Swing, JavaFX & SWT 6
B ImageIO gif Dateien laden AWT, Swing, JavaFX & SWT 7
S Ordner mit Bildern laden AWT, Swing, JavaFX & SWT 2
E Swing Panel neu laden /neu zeichnen AWT, Swing, JavaFX & SWT 4
S JInternalFrame oder JTextArea neu laden AWT, Swing, JavaFX & SWT 2
O Tabelle laden - Prozessorlast 100% ?? AWT, Swing, JavaFX & SWT 11
N Tablle nach SQL-Update neu Laden AWT, Swing, JavaFX & SWT 4
O Swing JInternalFrame komplett neu laden AWT, Swing, JavaFX & SWT 3
Z JTable neu laden AWT, Swing, JavaFX & SWT 19
R JTable nur sichtbaren Bereich laden AWT, Swing, JavaFX & SWT 12
Dit_ Mit Button "Weiter" neues Panel laden, altes ausblenden... AWT, Swing, JavaFX & SWT 4
SuperSeppel13 Vorschuabilder laden AWT, Swing, JavaFX & SWT 6
H SWT TabItem von Methode "neu laden" AWT, Swing, JavaFX & SWT 3
Developer_X Java BMP-Dateien laden AWT, Swing, JavaFX & SWT 2
C Bild in ein JPanel laden AWT, Swing, JavaFX & SWT 4
W Frame Speichern/laden AWT, Swing, JavaFX & SWT 7
T HTML Seite neu laden mittels Applet AWT, Swing, JavaFX & SWT 2
R Swing JTable, werte speichern und laden AWT, Swing, JavaFX & SWT 25
D Font laden AWT, Swing, JavaFX & SWT 2
C Problem mit Bild neu laden AWT, Swing, JavaFX & SWT 7
S JTappedPane neu laden AWT, Swing, JavaFX & SWT 2
Fadi Images in JAR Datei laden? AWT, Swing, JavaFX & SWT 5
D Event beim Laden eines JPanels? AWT, Swing, JavaFX & SWT 3
S [ANT] jsch jar aus einem anderen Ordner laden AWT, Swing, JavaFX & SWT 7
1 Laden einer Datei zur Echtzeit Darstellen AWT, Swing, JavaFX & SWT 7
A JTable neu laden AWT, Swing, JavaFX & SWT 2
F csv Datein in Tabelle laden AWT, Swing, JavaFX & SWT 2
M html aus einem Stream Laden und Anzeigen AWT, Swing, JavaFX & SWT 4
T Fenster neu laden AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben