jar

SirWayne

Erfahrenes Mitglied
Hallo zusammen
ich generier ein jar was sich in dem ordner indem ich es generier wunderbar ausführen lässt, aber sobald ich es in einen anderen ordner verschieb findet er meine bilder nicht mehr,obwohl die aber im jar file mit drin sind

z.B.



Code:
postfach=new ImageIcon(System.getProperty("user.dir")+"/studio/lib/post.jpg");

meine package ist studio/lib



warum findet er die datei nicht in einem anderen ordner!
 
Hallo,

dass die Bilder nicht mehr gefunden werden liegt daran, dass du eine absolute Pfadangabe machst. Dort werden die Bilder nachher immer noch gesucht. Du solltest aus deiner Pfadangabe eine relativa Pfadangabe machen, also kurz gesagt nur die Ordner die sich in deinem Jar-Archiv befinden.
Ich hoffe ich hab mich verständlich ausgerückt, falls nicht erkläre ich es gerne ausführlicher.

MFG

zEriX
 
Moin!
Mit System.getProperty("user.dir") bekommst du eine Pfadangabe, welche nicht dein Jar-File durchsucht, sondern das Verzeichnis, in dem sich dein Programm befindet.

Um auf dein Bild im Jar File zuzugreifen, brauchst du etwas derart:
Code:
new ImageIcon(getClass().getResource("/studio/lib/post.jpg"));
Kommt natürlich ganz darauf an, wie genau die Struktur des jars aussieht..

*grüssle*
MeinerEiner

@zerix .. langsamer, aber hübscher erklärt finde ich *g*
 
ja deds mit dem classloader hab ich auch schon gemacht in eclipse hat es funktioniert aber danach im jar file nicht mehr keine ahnung warum?oder wie sieht die pfandangabe an getClass.getResource(/package/bild.jpg) oder muss mein jar name noch mit rein
habs genauso so aufgerufen wie du

ok mein classpath sieht so aus

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="lib" path="studio/lib/itext-2.0.3.jar"/>
<classpathentry exported="true" kind="lib" path="studio/lib/jdom.jar"/>
<classpathentry exported="true" kind="lib" path="studio/lib/kunststoff.jar"/>
<classpathentry exported="true" kind="lib" path="studio/lib/mysql-connector-java-5.1.0-bin.jar"/>
--zeile <classpathentry exported="true" kind="lib" path="studio/lib/post.jpg"/>
<classpathentry kind="output" path=""/>
</classpath>
was ich dazu sagen muss seid ich die zeile eingefügt habe hat mein projekt immer ein rotes kreuz aber ich weiß nicht was daran falsch ist ohne die zeile ist alles wieder normal

der aufruf
System.out.println(getClass().getResource("/studio/lib/post.jpg"));
liefert mir das zurück
file:/C:/Projekte/studio/studio/studio/lib/post.jpg

also meine lösung war bis jetzt dass ich meine benutzen jar files in einen extra ordner libs mach nicht in eine package und diese nicht in das jar file aufnehme dann funktioniert es eindwandfrei...
weil er bringt nicht nur ein fehler wegen den bilder sondern auch dass er mein kunstoff.jar nicht erkennt
 
Zuletzt bearbeitet:
Bilder kannst du Problemlos in dein Jar-File reinpacken. Du musst es dann halt mit der oben genannten Methode laden. Du brauchst die Bilder auch nicht in den Class-Path aufzunehmen.
Code:
new ImageIcon(getClass().getResource("/studio/lib/post.jpg"));
Das war schon richtig, wobei "studio/lib" für Packages in deinem Jar-Archive stehen.

Die anderen Jar-Files dürfen nicht in deinem Jar-File sein, sondern müssen sich außerhalb befinden und diese gibst du dann im Classpath an.

Was ist das für eine XML-Datei?


MFG

zEriX
 
Zuletzt bearbeitet:
ok alles klar darum hat des mit den jar files nicht funktioniert gut zu wissen
aber wie gesagt , dass mit den bildern hat leider nicht geklappt!! meine package ist studio.lib und das bild heißt post.jpg von dem her müsste es schon passen!
die xml datei ist meine .classpath datei....genriert eclipse automatisch hab nur meine jars selber eingefügt
 
Zurück