Eclipse 圖形界面程序中,圖片放在 `src/icon/xxx.png`,代碼用相對路徑 `"icon/xxx.png"` 無法顯示;絕對路徑正常。
// 圖片放在 src/main/resources/icon/xxx.png (Maven) 或 src/icon/xxx.png
InputStream is = getClass().getClassLoader().getResourceAsStream("icon/xxx.png");
// 或
InputStream is = getClass().getResourceAsStream("/icon/xxx.png"); // 絕對路徑從 classpath 根
Image image = ImageIO.read(is);
String basePath = System.getProperty("user.dir"); // 項目根目錄
String imgPath = basePath + "/src/icon/xxx.png"; // 僅開發環境有效
// 打包成 jar 後完全失效
// 從 classpath 根加載
ImageIcon icon = new ImageIcon(getClass().getResource("/icon/xxx.png"));
JLabel label = new JLabel(icon);
src/
├── main/
│ ├── java/ # Java 源碼
│ └── resources/ # 資源文件(推薦放這裡)
│ └── icon/
│ └── xxx.png
編譯後自動複製到 `target/classes/icon/xxx.png`,Classpath 直接可訪問。
// 打印實際加載路徑
URL url = getClass().getResource("/icon/xxx.png");
System.out.println("圖片加載路徑: " + url);
// 輸出示例: file:/D:/workspace/project/bin/icon/xxx.png
// 或: jar:file:/app.jar!/icon/xxx.png