Ich habe ein seltsames Problem in Java. Ich möchte ein lauffähiges Glas erstellen: Dies ist meine einzige Klasse:
public class Launcher {
public Launcher() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
String path = Launcher.class.getResource("/1.png").getFile();
File f = new File(path);
JOptionPane.showMessageDialog(null,Boolean.toString(f.exists()));
}
}
Wie Sie sehen, wird nur ausgegeben, ob die Datei gefunden werden kann oder nicht. Es funktioniert gut unter Sonnenfinsternis (gibt true zurück). Ich habe einen Quellordner Ressourcen mit dem Bild 1.png erstellt. (Ressourcenordner wird der Quelle im Erstellungspfad hinzugefügt.)
Sobald ich das Projekt in eine ausführbare JAR exportiere und starte, wird false zurückgegeben. Ich weiß nicht warum. Jemand hat eine Idee? Danke im Voraus
Bearbeiten: Ich folgte Beispiel 2, um den Ressourcenordner zu erstellen: Von Eclipse exportierte ausführbare JAR-Datei zeigt keine Bilder an
Antworten:
2 für die Antwort № 1Wenn Sie Ressourcen aus Ihrer .jar-Datei laden möchten, verwenden Sie getClass().getResource()
. Das gibt eine URL mit korrektem Pfad zurück.
Image icon = ImageIO.read(getClass().getResource("image´s path"));
Verwenden Sie, um auf Bilder in einem Glas zuzugreifen Class.getResource()
.
Ich mache normalerweise so etwas:
InputStream stream = MyClass.class.getResourceAsStream("Icon.png");
if(stream == null) {
throw new RuntimeException("Icon.png not found.");
}
try {
return ImageIO.read(stream);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
stream.close();
} catch(IOException e) { }
}
Trotzdem verstehen Sie, bitte gehen Sie diesen Link durch.
Von Eclipse exportierte ausführbare JAR-Datei zeigt keine Bilder an
0 für die Antwort № 2
Weil das Bild keine separate Datei ist, sondern in die .jar gepackt ist.
Verwenden Sie den Code, um das Bild aus dem Stream zu erstellen
InputStream is=Launcher.class.getResourceAsStream("/1.png");
Image img=ImageIO.read(is);
0 für die Antwort № 3
Versuchen Sie, dies zu verwenden, um ein Bild zu erhalten
InputStream input = getClass().getResourceAsStream("/your image path in jar");
0 für die Antwort № 4
Zwei einfache Schritte:
1 - Fügen Sie den Ordner (in dem sich das Bild befindet) zum Erstellungspfad hinzu.
2 - Verwenden Sie dies:
InputStream url = this.getClass().getResourceAsStream("/load04.gif");
myImageView.setImage(new Image(url));