當我創建JAR時,JAR將不會讀取其中的文件夾,只有JAR文件夾中的文件夾。好的,那不是很具描述性。所以這裏是我編輯支持的一張照片。 Java jar不能從jar中讀取文件,只有外部文件夾?
我希望你現在明白了。那麼我該如何解決這個問題?我已經在eclipse中有res和stats構建路徑的一部分了,現在呢?
我的代碼用於讀取資源:
Image player; player = new ImageIcon("res/player.png").getImage();
當我創建JAR時,JAR將不會讀取其中的文件夾,只有JAR文件夾中的文件夾。好的,那不是很具描述性。所以這裏是我編輯支持的一張照片。 Java jar不能從jar中讀取文件,只有外部文件夾?
我希望你現在明白了。那麼我該如何解決這個問題?我已經在eclipse中有res和stats構建路徑的一部分了,現在呢?
我的代碼用於讀取資源:
Image player; player = new ImageIcon("res/player.png").getImage();
當使用ImageIcon
和傳遞一個String
,預計該參數指的是File
。
從指定文件一個ImageIcon。 ...指定的字符串 可以是文件名或文件路徑
文件和「資源」是不同的東西。
相反,嘗試使用更多的東西一樣......
new ImageIcon(getClass().getResource("res/player.png"));
假設res/player.png
駐留在側罐子res
目錄中。
根據關係到類試圖加載資源,資源的位置,您可能需要使用
new ImageIcon(getClass().getResource("/res/player.png"));
,而不是...
更新
的一些建議正如EJP指出的那樣,您應該準備好找到資源的可能性。
URL url = getClass().getResource("/res/player.png");
ImageIcon img = null;
if (url != null) {
img = new ImageIcon(url);
}
// Deal with null result...
而且您應該使用ImageIO.read
來讀取圖像。除此之外,它支持更多的(並且可以支持更多的未來)的圖像格式的事實,它返回之前加載圖像並拋出IOException
如果圖像不能被讀取...
URL url = getClass().getResource("/res/player.png");
ImageIcon icon = null;
if (url != null) {
try {
BufferedImage img = ImageIO.read(url);
icon = new ImageIcon(img);
} catch (IOException exp) {
// handle the exception...
exp.printStackTrace();
}
}
// Deal with null result...
並確保getResource()結果不爲空。 – EJP
@EJP +1改爲使用ImageIO.read – MadProgrammer
請出示你用來加載資源的代碼。 – dnault
發送代碼,沒有照片... – thst
解壓縮Jar並確保「res」包含在中。確保您正在使用'Class#getResource'或'Class#getResourceAsInputStream'加載資源 – MadProgrammer