在下面的代碼示例中,當我在Eclipse中測試代碼時,它工作得很好。然而,當我出口的jar文件,並通過命令行測試,它拋出一個錯誤:IIOException: Can't read input file!
導出的jar文件不會讀取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();
}
}
文件我想獲得位於圖像文件夾這是javaFile
包內內。我注意到一件事可能表明問題。
- 在我有的print語句中,我注意到javaFile.jar部分末尾有一個感嘆號。那是對的嗎?這可能表明文件或結構有問題嗎?
而且,萬一有人有更好的建議,我應該怎麼加載的文件,我會告訴你我的意圖。我想從jar中的相對位置(Images文件夾)加載文件。我想顯示它(已經在我的實際代碼中完成),並將稍後傳遞的位置存儲到另一個函數(也完成)。
嘗試的getClass()。的getResourceAsStream –
@ oliv37這將意味着我不得不把網址成一個InputStream。然後我需要將其轉換爲文件嗎? –
ImageIO.read(inputStream) –