我正在嘗試將 Image 設置為 JLabel。我使用了這段代碼,它在 IDE 中運行良好。但是當我嘗試在 dist 文件夾中運行 Executable Jar 文件時,它給了我這個錯誤。javax.imageio.IIOException:無法讀取輸入文件!如何解決這個問題。請任何人都可以幫助我嗎?提前致謝。代碼是,ImageIcon iconPicture = new ImageIcon(ImageIO.read(new File("./src/PIC/Images/profileImage.png")));
pictureLabel.setIcon(iconPicture);
2 回答

aluckdog
TA貢獻1847條經驗 獲得超7個贊
您不能依賴“工作目錄”與存儲 Jar/類的位置相同。
ImageIcon iconPicture = new ImageIcon(ImageIO.read(new File("./src/PIC/Images/profileImage.png")));
這向我表明您正在處理一種嵌入式資源,該資源包含在類路徑/Jar 文件中。在這種情況下,您應該使用Class#getResource
代替加載資源,因為資源將無法作為 a 讀取File
(如果它包含在 Jar 文件中)。
所以,你應該做一些更像是......
ImageIcon iconPicture = new ImageIcon(ImageIO.read(getClass().getResource("/PIC/Images/profileImage.png")));

忽然笑
TA貢獻1806條經驗 獲得超5個贊
您的程序在運行時無法從給定的路徑中找到圖像
./src/PIC/Images/profileImage.png
這里 。指的是當前目錄,當你必須運行你的程序時, . 一定不是你想要的。因此,解決問題的一種方法是使用絕對路徑,這類似于
D:/work/proj1/src/PIC/Images/profileImage.png
或者
您需要根據您的項目找到當前目錄,然后構建正確的相對路徑。
您可以使用以下一行代碼找到當前目錄路徑,
System.out.println(new File(".").getCanonicalPath());
找到您當前的路徑,然后更正您提供的圖像的相對路徑。
添加回答
舉報
0/150
提交
取消