Erste Schritte Einbindung von Grafiken beim Eclipse Export in Jar File

GGK_01

Bekanntes Mitglied
Hallo,

ich habe eine Frage bezüglich der Einbindung von Grafiken (Icons am Suchbutton) im Jar File, das Eclipse exportiert wird.
Probiert hab ich schon vieles, jedoch funktioniert hat die Darstellung leider noch nicht.

Ich möchte aus Eclipse ein Jar-File exportieren, die Datei vom Desktop (also Windowsumgebung) aufrufen...aber leider fehlen die eingebundenen Grafiken.


Java:
File f = new File("\\Worklist.jar\\worklist\\Refresh24.gif");
	textArea_1.setText(f.getCanonicalPath()+": " +f.exists()+"\n");
	URL url = Main.class.getResource("Refresh24.gif");
	textArea_1.append("URL: " +url);

beim Aufruf meines Programmes werden aber die Grafiken nicht gefunden:
Code:
\\server2231c\DAT\USER10\b0003432\Desktop\Worklist.jar\worklist\Refresh24.gif: false
URL: jar:file://server2231c/DAT/USER10/b0003432/Desktop/Worklist.jar!/worklist/Refresh24.gif

Java:
File userdirs = new File(System.getProperty("user.dir"));
User.dir: \\server2231c\DAT\USER10\b0003432\Desktop

Ich kann nicht nachvollziehen, was hier passiert und wo ich die Grafik einfügen muss (da Eclöipse die Grafik nicht exportiert, kopiere ich diese manuell in das jar-file.

Danke für Eure Hilfe

GGK
 
Niemals Backslashes machen, das kann auf anderen Betriebsystemen (in meinen Fall Ubuntu) Probleme verursachen.

Liegt die Graphic in der Jar im selben Verzeichnis wie die .class-Datei?
 
Ja, die Refresh.gif liegt im Verzeichnis bei den .class Files.


die Backslashes sind auch raus..immer noch das gleiche Problem
 
versuch es mal nur mit einem relativen Pfad und dem Start aus eclipse, wenn der funktioniert, dann genauso exportieren und wieder an der Stelle im jar einbinden.
 
Ich kann nicht nachvollziehen, was hier passiert und wo ich die Grafik einfügen muss (da Eclöipse die Grafik nicht exportiert, kopiere ich diese manuell in das jar-file.
Eclipse exportiert alles ins jar-File, was in einem Source-Folder liegt. Schmeiß die Grafiken also entweder direkt in die Packages, in denen die Java-Dateien liegen oder erstelle Dir die allgemein so benutzte Ordnerstruktur wie folgt:
Code:
deinProjekt/
  src/
    main/
      java/   <-- Das muss ein Source-Folder sein
         ein/package/
         ein/anderes/package/
      resources/ <-- Das muss auch ein Source-Foder sein
         ein/resource/package/
         ein/anderes/resource/package/
Source-Folder erstellst Du über "rechte Maustaste auf das Projekt -> Properties -> Build Path". Damit hast Du die Bilder dann mit im jar.
Darauf zugreifen tust Du mit folgendem Code:
Java:
// Gif liegt in einem Package ein.resource.package
Main.class.getResource("/ein/resource/package/Refresh24.gif");
// Gif liegt im default package
Main.class.getResource("/Refresh24.gif");
Wichtig ist hier der voll qualifizierte Name inkl. Package, der immer von Root aus losgeht, also mit einem "/" beginnt.

P.S. Das hier ist Käse. Du kannst auf Resourcen in Jars nicht per File-Semantik zugreifen, weil sie keine Files sind:
Java:
File f = new File("\\Worklist.jar\\worklist\\Refresh24.gif");
 
Zuletzt bearbeitet von einem Moderator:
Was genau für eine Anwendung schreibst du denn?

Wenn es eine Eclipse-Anwendung wäre (sprich ein Bundle/Plugin), dann wäre folgender Code für dich hilfreich:
Code:
				URL pluginBasedURL = new URL("platform:/plugin/"
						+ MyPlugin.PLUGIN_ID + "/" + iconPath);
				if (FileLocator.find(pluginBasedURL) != null) {
					ImageDescriptor id = AbstractUIPlugin
							.imageDescriptorFromPlugin(PFSCorePlugin.PLUGIN_ID,
									iconPath);
					result = id.createImage();
				}

Ansonsten muss du nur, wenn der Name deiner Klasse "mein.package.Main" lautet, die Datei Bildatei entprechend in "mein.package" liegen, also quasi als "mein.package.Refresh24.gif", dann klappt es auch mit dem "Main.class.getResource("Refresh24.gif");" - am besten aber getResourceAsStream(""), dann kannst du es mit anderen Mitteln laden.
z.B. für Swing:
Code:
BufferedImage img = ImageIO.read(Main.class.getResourceAsStream("Refresh24.gif"));

(Die Seite, die der GUI-Programmer verlinkt hat, ist hier dein Freund)
 
Danke für Eure Hilfe....die Grafik habe ich nun erfolgreich eingebunden:

Java:
btnDb.setIcon(new ImageIcon(Worklist.class.getResource("/Refresh24.gif")));
Die Datei "Refresh.gif" braucht für Eclipse und für das JAr-File einen unterschiedlichen Ablagebereich
Jar-File:
Code:
Mein Package
             /Worklist
                 /src
Eclipse:
Code:
Mein Package
             /Worklist
                 /bin

LG, GGK
 
Du hast in einem Jar-File einen src-Ordner?
btw. sollte Eclipse selbstständig beim Build von src ins bin kopieren. Das ist wichtig, da es den bin regelmäßig neu aufbaut.
 
die dargestellte Ordnerstruktur entspricht meiner Entwicklungsumgebung in Eclipse. Im Jar-File habe ich die Grafik auf oberster Ebene.
Ich hab gerade nochmals ein bissl rumgespielt...ich brauch in Eclipse die Datei in beiden Ordern
Code:
src
src\meinProject


GGK
 

Zurück
Oben