簡體   English   中英

圖像無法在.jar文件中使用

[英]Images will not work in a .jar file

創建應用程序的JAR時,不再顯示應用程序中的圖像。 我們加載圖片的代碼示例如下:

ImageIcon placeHolder = new ImageIcon("src\\Cards\\hidden.png");

我們不知道為什么會這樣。 如果我們不將它壓縮到JAR,應用程序將按預期運行; 作為JAR,圖像就會消失。 我們還嘗試使用URL而不是ImageIcons,但這只會導致程序根本不運行。

有任何想法嗎?

編輯:我們正在將圖像文件放入正確路徑的JAR文件中,這不是問題所在。

檢查您正在調用的構造函數的API。 傳入的字符串是文件路徑 - 當資源打包在JAR中時,文件系統上沒有包含圖像的文件,因此您不能再使用此構造函數。

相反,您需要使用類加載器從流中加載資源,並將它們拉入字節數組:

byte[] buffer = new byte[IMAGE_MAX_SIZE];
InputStream imageStream = getClassLoader().getResourceAsStream("src\Cards\hidden.png");
imageStream.read(buffer, 0, IMAGE_MAX_SIZE);
ImageIcon placeHolder = new ImageIcon(buffer);

當然,需要更多例外和邊緣案件處理,但這是它的要點。

您應該從類路徑加載資源:

 InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("Cards/hidden.png")

這當然假設您在創建JAR時實際上是將圖像文件放入其中。

還有一種將資源作為URL獲取的方法。

問題 :文件夾src是否存在於jar中?

提示 :您可以使用支持ZIP的任何解包程序打開.jar以查看其內容。

:您引用資源的方式不正確,您應該執行類似getClass().getClassLoader().getResource("Cards/hidden.png")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM