Bild aus .jar wird nicht angezeigt

Snowowl

Erfahrenes Mitglied
Hallo an alle,

mein Problem ist es, dass das Bild, welches ich aus der .jar Datei lade nicht angezeigt wird. In Eclipse jedoch schon.
Ich habe diesbezüglich auch schon gesucht, aber ich glaube bei mir ist es nicht as Problem, dass ich die Datei nicht laden kann, sondern wohl irgend ein Anderes.

Um das Bild zu laden mache ich folgendes:
Code:
URL url = getClass().getResource("/files/images/JClientDatabaseBeta.png");
File file = new File(url.getFile());

und benutze diese Klasse, um das Bild meinem Panel hinzuzufügen:
Code:
public class ViewComponent extends JComponent
{
	private Image image;
	public void setImage(File file)
	{
		image = Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath());
		if (image != null)
			repaint();
	}
	
	protected void paintComponent(Graphics g)
	{
		if(image != null)
			g.drawImage(image, 0, 0, this);
	}
}

In Eclipse wie gesagt kein Problem.
Wenn ich jedoch als .jar exportiere bleibt das Panel einfach grau, es kommt auch keine Exeption. Die Datei ist auch 100% da, wo sie sein soll und
Code:
jf.add(new JLabel(file.toString()));
zeigt auch den korrekten Pfad an:
file:\C:\Users\xxx\Desktop\JarName.jar!\files\images\bild.png

Ich hoffe ihr könnt mir bei meinem Problem behilflich sein :-)

Grüße,

Niklas
 
Moin,

versuch mal das Image direkt mit getResource über das Toolkit selbst bereitzustellen:
Java:
image = Toolkit.getDefaultToolkit().getImage(getClass().getResource(file.getAbsolutePath()));
Gruß,
Xan
 
Also ich habe in der Klasse ViewComponent nun Direkt das Image laden lassen, so wie du es geschrieben hast.

Nun kommt folgende Exeption:
Code:
Uncaught error fetching image:
java.lang.NullPointerException
	at sun.awt.image.URLImageSource.getConnection(Unknown Source)
	at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
	at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
	at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
	at sun.awt.image.ImageFetcher.run(Unknown Source)
 
Ich habe eben gerade nun endlich eine Alternative gefunden, die auch beim exportierten .jar funtioniert:
Code:
URL url = this.getClass().getResource("/files/images/JClientDatabaseBeta.png");
ImageIcon icon = new ImageIcon(url);
...
jf.add(new JLabel(icon));

Aber vielleicht kann mir ja trotzdem jemand beantworten, warum das andere nicht ging :-)

Grüße,

Niklas
 
Zurück