/ / Das Exportieren von Bildern im ausführbaren Jar funktioniert nicht - Java, Image, Datei

Das Exportieren von Bildern im ausführbaren Jar funktioniert nicht - Java, Image, Datei

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 № 1

Wenn 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));