In dem folgenden Codebeispiel, wenn ich den Code in Eclipse testen, funktioniert es einwandfrei. Allerdings, wenn ich die JAR-Datei exportieren und über die Kommandozeile testen, wirft er einen Fehler: IIOException: Can't read input file!
Exportierte Jar-Datei liest die Datei nicht in Jar
private BufferedImage img = null;
private String imgSource;
if (img == null)
{
try {
URL url = getClass().getResource("Images/questionMark.png");
System.out.println(url.getPath());
/* This prints: file:/C:/Users/Keno/Documents/javaFile.jar!/javaFile/Images/questionMark.png */
File file = new File(url.getPath());
img = ImageIO.read(file);
imgSource = file.getName();
} catch (IOException e) {
e.printStackTrace();
}
}
Die Datei, die ich zu bekommen in der Bilder-Ordner befindet, der innerhalb des javaFile
Paket. Ich habe eine Sache bemerkt, die auf das Problem hinweisen könnte.
- In der print-Anweisung, die ich habe, bemerke ich ein Ausrufezeichen am Ende des Abschnitts javaFile.jar. Ist das korrekt? Könnte das auf ein Problem mit der Datei oder Struktur hinweisen?
auch, falls jemand einen besseren Vorschlag hat, wie ich die Datei laden sollte, werde ich Ihnen meine Absichten erzählen. Ich möchte die Datei von einem relativen Speicherort (Images-Ordner) im Jar laden. Ich möchte es anzeigen (bereits in meinem tatsächlichen Code getan) und auch den Speicherort speichern, der später an eine andere Funktion übergeben wird (auch getan).
try versuchen. GetResourceAsStream –
@ oliv37 Das würde bedeuten, ich URL in ein Inputstream drehen müsste. Müsste ich es dann in eine Datei konvertieren? –
ImageIO.read (inputStream) –