Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe ein Programm geschrieben in dem Bilder verwendet werden..
Wenn ich es in Eclipse ausführe, funktioniert alles wunderbar. Wenn ich dann mittels Exportieren eine ausführbare Jar-Datei erstelle, werden die Bilder nicht mehr angezeigt..
Komischerweise konnte ich vor zwei Tagen das alles noch wunderbar machen.
und plötzlich macht er so einen Mist..
ich kann mich nicht erinnern irgendetwas in Eclipse geändert zu haben..
ich habe auch ältere Projekte von mir getestet und plötzlich haben alle das Problem, wenn ich eine Jar davon erstelle.. was kann da schief gelaufen sein?
Ich denke nicht, dass es an Eclipse liegt. Vermutlich lädst du die Bilder falsch... aber "Bilder werden nicht mehr angezeigt" ist nicht so ganz eine konkrete Fehlerbeschreibung. Dir wird bestimmt irgendeine Exception angezeigt.
Warum wird das Bild dann, wenn ich aus Eclipse heraus das Programm starte, angezeigt. also kann der Pfad ja eigentlich nicht verkehrt sein.
Es gibt auch keine Fehlermeldungen!
Die Bilder liegen in einem Package namens "pic".
der Aufruf:
ach ja l_test ist ein JLabel
Java:
ImageIcon icon = new ImageIcon("src/pic/Katas.png");
l_test.setIcon(icon);
Ein ImageIcon kann z.B. AFAIR ein nicht gefundenes Bild kommentarlos verschlucken...
Der Pfad kann insofern verkehrt sein, dass der Ordner "src" in einem JAR nicht notwendigerweise vorhanden ist (im Allgemeinen eher nicht). Schau mal beim Exportieren des JARs, ob die Bilder dabei sind, und leg' sie ggf. in ein Verzeichnis, das du explizit mit exportierst.
Ich habe nach einigen Versuchen etwas raus bekommen..
Ich kann ja meine Klassen in Packages erstellen oder aber auch nicht..
Struktur 1:
kein package: Main-Klasse
package "image": Bilder
Struktur 1 kann ich problemlos machen. Bilder werden richtig aufgerufen mit Pfadangabe "images/bild1.jpg"
Struktur 2:
package "doc": Main-Klasse
package "pic": Bilder
funktioniert in Eclipse mit "src/pic/bild1.jpg"!
konvertiert in ausführbare Jar datei nicht..
Also ist meine Schlussfolgerung, dass ich in der Pfadangabe erst "doc" "verlassen" muss (also wieder eine Verzeichnisebene höher) und dann um dann die Pfadangabe "pic/bild1.jpg" zu nutzen..
Pfade wie "./pic/bild1.jpg" oder "../pic/bild1.jpg"funktioniert nicht..
hast Du mal versucht, den Pfad der Bilder absolut anzugeben?
Ich vermute auch, wie meine Vorredner, das die Crux darin liegt, dass die unterschiedlichen Arten, mit denen Du die Applikation aufrufst, von unterschiedlichen Startverzeichnissen ausgehen ....
Ich weiß nicht, wie oft das hier schon aufgetreten ist... um Dateien/Bilder/was auch immer nur zum lesen zu öffnen, sollte man diese in den Classpath aufnehmen (z.B. indem sie mit in das JAR gepackt werden) und anschließend über
...
final InputStream in = getClass().getResourceAsStream("/pic/image1.jpg");
final Image image = javax.imageio.ImageIO.read(in);
final ImageIcon icon = new ImageIcon(image);
...
Ich hatte übrigens die Ausführbare Jar schon überprüft und es waren die Bilder enthalten..
Ich muss leider zugeben, das ich mich mit den Streams nicht gut bis gar nicht auskenne, da ich sie in meinen bisherigen Projekten nicht benötigt hatte.
Also dringender Nachholbedarf meinerseits!!
Eine letzte Frage noch, bevor ich den Thread hier schliesse: Warum "final" ??
Ist kein zwang, aber ich markiere mittlerweile alle Variablen, die ich nicht neu belege mit final, einfach um das dem zukünftigem Leser meines Codes direkt zu zeigen, dass er sich über eine Neubelegung der Variable keine Gedanken machen muss.