# Icons in jar



## Tobi (5. Jun 2009)

Hallo zusammen, 

ich habe ein kleines Problem. 

Mit...


```
Icon iconHome = new ImageIcon( "src/src/de/prana/hpms/display/icons/toolbarhome.png" );
```

...baue ich mir Icons, die nachdem ich eine ausführbare Jar daraus gemacht hab nicht mehr angezeigt werden. Ich habe ein wenig recherchiert und bin darauf gekommen, dass ich es eher so machen sollte:


```
Icon iconHome = new ImageIcon(getClass().getResource("src/src/de/prana/hpms/display/icons/toolbarhome.png"));
```

Ich bekomme keine Fehlermeldung, allerdings werden so aber keine Icons angezeigt, sprich schon Eclipse zeigt im Visual Editor an, dass der Button kein Icon mehr hat. 

Ich bin jetzt ziemlich ratlos, da ich auch noch nicht sehr viel Erfahrung hab.


----------



## Roar (5. Jun 2009)

src/src/de/prana/..
halt ich auch für einen merkwürdigen pfad, vielleicht sollte der nur
/de/prana/...
lauten?


----------



## Tobi (5. Jun 2009)

Hehe....ja da hast du recht, ist in der Tat merkwürdig, aber allerdings stimmt der so.
Weil ich bekomm die Icons ja angezeigt, lediglich wenn ich ne Jar drauß mach, geht es net.


----------



## Wildcard (5. Jun 2009)

1. prüfen ob die Bilder überhaupt im jar sind
2. Resourcen werden mit dem Package Namen angesprochen und src/src/ ist mit ziemlicher Sicherheit nicht Teil des Pfades.


----------



## Tobi (10. Jun 2009)

Also ich habe jetzt gerade nachgeschaut. Die Icons sind im Jar mit drin, jedoch nicht am dem Pfad, wie sie in Eclipse sind. Sie sind sozusagen im Root abgelegt. Was hab ich falsch gemacht?


----------



## thE_29 (10. Jun 2009)

Tjo, musste mit ant rumspielen!
Der Zugriff ist aber meistens von der Ausführung abhängig. Unter der IDE gehts am meisten, weil der ja oft auf den src Ordner zugreift.
Wenn du ne Jar machst ist das auch wieder was anderes und vorallem wenn du ne Exe drauß machst...


----------



## byte (10. Jun 2009)

Roar hat die richtige Antwort schon gegeben.

Relevant ist der Pfad im Classpath zur Laufzeit! Also der Fully Qualified Name, unter der die Datei für den ClassLoader zur Verfügung steht.


----------



## Tobi (10. Jun 2009)

byto hat gesagt.:


> Roar hat die richtige Antwort schon gegeben.
> 
> Relevant ist der Pfad im Classpath zur Laufzeit! Also der Fully Qualified Name, unter der die Datei für den ClassLoader zur Verfügung steht.



Das Problem ist aber, dass es so gar nicht funktioniert...weder in Eclipse, noch im jar...


----------



## byte (10. Jun 2009)

Wie sieht denn Dein Classpath aus? Wenn Du mit Eclipse arbeitest, hast Du per Default ein Classpath-Verzeichnis src. Das ist dann der Root für den ClassLoader.

Hast Du z.B. ein Verzeichnis src/images/logo.png und src ist Classpath-Verzeichnis, dann kannst Du die Resource über den Pfad /images/logo.png laden.


----------



## thE_29 (10. Jun 2009)

Ich habe es so gemacht:

```
getClass().getClassLoader().getResource("at/jta/image/back.gif"))
```


----------



## Tobi (19. Jun 2009)

Also erst mal Danke für die ganzen Tips und Antworten.

Ich konnte es jetzt so lösen:

Icon iconCal = new ImageIcon(ClassLoader.getSystemResource("calendar.png"));

Das sind nun alles Icons, die von einem Button geladen werden. Ein Bild, oder Icon lade ich als
Logo direkt auf das Panel. Das funktioniert aber nun leider nicht. An was kann das liegen?


----------



## Verjigorm (19. Jun 2009)

Ich persönlich verstehe die letzte Frage nicht


----------



## Tobi (19. Jun 2009)

Verjigorm hat gesagt.:


> Ich persönlich verstehe die letzte Frage nicht



Ich verstehe das Problem auch nicht :bahnhof:

Also ich versuche nur, ein Icon als Logo direkt auf ein jPanel zu bringen. Und das funktioniert leider nicht -> Exception.

Auf den Buttons werden die Icons mit ....setIcon usw. gesetzt, da funktioniert es.


----------



## max40 (19. Jun 2009)

teil uns die Exception mit und man kann dir schneller helfen!


----------



## Tobi (19. Jun 2009)

So jetzt hab ich gerade wieder umgebaut, dass die Exception kommt. Nun bekomme ich (leider) keine mehr.
Jetzt ist es so, dass es in Eclipse wunderbar funktioniert, wenn ich eine Jar darauß mache bekomme ich nur den Frame angezeigt, ohne alles, d.h. irgendwo steigt er aus.


----------



## max40 (19. Jun 2009)

da gibt es jetzt mehrere Möglichkeiten
1. wir raten jetzt wie dein Code und dein Jar-File aussieht und machen Vorschläge
oder 2. du baust System.out.println() an div. Stellen in deinem Code ein, wo du denkst das er rausfliegen könnte und kommst dann selbst zur Lösung.
oder 3. debug


----------



## Tobi (19. Jun 2009)

Also ich lad das File mit:

Icon iconLogo = new ImageIcon(ClassLoader.getSystemResource("prana.png"));

Dann wird bei der Initialisierung folgendes aufgerufen:

lblLogo = new JLabel();
		//lblLogo.setText("JLabel");
		lblLogo.setIcon(iconLogo);

Da es ja im Eclipse wunderbar funktioniert, ist es sehr schwer zu debuggen. Oder kann man ein fertiges Jar debuggen?


----------



## max40 (19. Jun 2009)

ja man kein sein Programm das nicht aus Eclipse gestartet wurde auch debuggen!
google mal nach "Java remote debugging"

dann wirst auch bestimmt selbst den Fehler in deinem Programm feststellen


----------

