2D-Grafik Funktionierende .jar datei mit Images (jpg) erzeugen

DarkSteel

Mitglied
Hallo leute,

ich möchte ein programm von mir mit eclipse als jar datei erstellen, um es ohne eclipse oder browser starten zu können. Erstellen kann ich die Jar mit Eclipse, nur ist der ordner images jedes mal nicht vorhanden und es lädt auch keine bilder.

Eclipse erzeugt ja immer 2 ordner... src und den bin ordner... damit man während dem programmieren die bilder mit einbindet hab ich einen ornder images im bin verzeichnis, etwa so:
("bin/images/lt4314.jpg") erstellt. --> beim relativen erzeugen eines images im javacode sieht das so aus:

Java:
lt4314 = ImageIO.read(getClass().getResource("images/LT4314.jpg"));

aber zurück zu meiner hauptfrage, wie schaffe ich es, dass die jar datei die bilder beinhaltet und einliest... habe schon den halben nachmittag mit suchen nach einer lösung verbracht aber entweder bekomm ichs nicht richtig umgesetzt oder versteh die lösungsansätze zu dem problem einfach nicht.

Java:
import javax.swing.*;
import javax.imageio.*;
import java.awt.*;
import java.io.*;


public class SkizzePanel extends JPanel {
	
	private	Image regalC;
	private	Image regalB; 
	private	Image regalA; 
	private	Image regalH; 
	private Image regalC4;
	
	private Image background;
	
	private Image lt4314;
	private Image lt4314g;
	private Image dlt4314;
	private Image lt4327;
	private Image lt4328;
	private Image lt6115;
	private Image lt6129;
	private Image lt6414;
	private Image lt6414g;
	private Image lt6415;
	private Image lt6428;
	private Image lt6428g;
	private Image lt34418;
	private Image lt34418g;
	private Image lt38059;
	private Image lt38059g;
	
	public SkizzePanel() {
		try {
			background = ImageIO.read(getClass().getResource("images/Background.jpg"));
			
			regalC = ImageIO.read(getClass().getResource("images/RegalC.jpg"));          // hier werden die Grafiken geladen
			regalB = ImageIO.read(getClass().getResource("images/RegalB.jpg"));
			regalA = ImageIO.read(getClass().getResource("images/RegalA.jpg"));
			regalH = ImageIO.read(getClass().getResource("images/Hybrid.jpg"));
			regalC4 = ImageIO.read(getClass().getResource("images/RegalC4.jpg"));
			
			lt4314 = ImageIO.read(getClass().getResource("images/LT4314.jpg"));
			lt4314g = ImageIO.read(getClass().getResource("images/LT4314g.jpg"));
			dlt4314 = ImageIO.read(getClass().getResource("images/DLT4314.jpg"));
			lt4327 = ImageIO.read(getClass().getResource("images/LT4327.jpg"));
			lt4328 = ImageIO.read(getClass().getResource("images/LT4328.jpg"));
			lt6115 = ImageIO.read(getClass().getResource("images/LT6115.jpg"));
			lt6129 = ImageIO.read(getClass().getResource("images/LT6129.jpg"));
			lt6414 = ImageIO.read(getClass().getResource("images/LT6414.jpg"));
			lt6414g = ImageIO.read(getClass().getResource("images/LT6414g.jpg"));
			lt6415 = ImageIO.read(getClass().getResource("images/LT6415.jpg"));
			lt6428 = ImageIO.read(getClass().getResource("images/LT6428.jpg"));
			lt6428g = ImageIO.read(getClass().getResource("images/LT6428g.jpg"));
			lt34418 = ImageIO.read(getClass().getResource("images/LT34418.jpg"));
			lt34418g = ImageIO.read(getClass().getResource("images/LT34418g.jpg"));
			lt38059 = ImageIO.read(getClass().getResource("images/LT38059.jpg"));
			lt38059g = ImageIO.read(getClass().getResource("images/LT38059g.jpg"));
			
		
		} catch (IllegalArgumentException iae) {
			JOptionPane.showMessageDialog(this, "Grafikdatei nicht gefunden!");
		} catch(IOException ioe) {
			JOptionPane.showMessageDialog(this, "Fehler beim Einlesen der Grafikdatei!");
		}

	}
	
	public void paintComponent(Graphics g) {         // ersetzt Methode paint
		super.paintComponent(g);
		g.drawImage(background,0,0,this);
		
		int regalX = 10;
		int regalY = 20;
		
		int regalAuswahl = Shelfconstructor.regalZahl.getRegalZahl();
		
		if (regalAuswahl == 1) {	
			g.drawImage(regalC,regalX,regalY, this);
		}
		if (regalAuswahl == 2) {
			g.drawImage(regalB,regalX,regalY, this);	
		}
		if (regalAuswahl == 3) {
			g.drawImage(regalA,regalX,regalY, this);	
		}
		if (regalAuswahl == 4) {
			g.drawImage(regalH,regalX,regalY, this);	
		}
		if (regalAuswahl == 5) {
			g.drawImage(regalC4,regalX,regalY, this);	
		}
...

So sieht der entsprechende Teil aus der die Images einbezieht. Diese klasse verwirklicht die bilder mit hilfe eines JPanels, dass wiederum in einem JFrame implementiert wurde, das von der mainclass aufgerufen wird.

Im Editor funktioniert das programm... mit anzeige der bilder...

hoffe mir kann jemand helfen.
Danke schonmal.
 
Zuletzt bearbeitet:
Eclipse erzeugt ja immer 2 ordner... src und den bin ordner... damit man während dem programmieren die bilder mit einbindet hab ich einen ornder images im bin verzeichnis, etwa so:
("bin/images/lt4314.jpg") erstellt. --> beim relativen erzeugen eines images im javacode sieht das so aus:
Nene, in dem bin Ordner legst du gar nichts ab. Bei nem clean würde Eclipse dir dort alles kommentarlos weglöschen.

Solche ressourcen legst du z.b. in einen Ordner "ressourcen" in dein Projektverzeichnis, und sagst Eclipse dass das in Source Folder ist.
Dann kopiert eclipse diesen Ordner ins bin verzeichnis (damit die Bilder gefunden werden wenn du das programm aus eclipse startest) und packt sie mit ins jar file.
 

Zurück
Oben