[英]Can't Access File in Resources Folder
我正在嘗試加載存儲在 /src/main/resources 文件夾中的圖像。 但是,當我這樣做時,我不斷遇到由於找不到資源而導致的 NullPointerException。
這是代碼片段:
try {
String path = this.getClass().getClassLoader().getResource("bern.png").toString();
} catch (IOException ex) {
System.out.println(path);
}
這是我的項目文件樹的圖像:
這是我的目標構建文件樹的圖像:
這是 NullPointerException 堆棧跟蹤: https://pastebin.com/KqJVxWEL
我已經嘗試使用我能想到的圖像文件的所有可能路徑。 (/src/main/resources/bern.png、src/main/resources/bern.png、/bern.png 等)。
我也嘗試過使用getClass().getClassLoader().getResource()
而不是getClass().getResource()
。 據我了解, Class
和getResource()
的ClassLoader
版本之間的唯一區別是Class
版本相對於根而言並不是絕對絕對的,而ClassLoader
版本是。
當我運行getClass().getResource("").toPath()
時,我得到了通往classes
目錄的路徑。 這與我讀到的有關使用目標構建文件樹的getResource()
方法的內容一致。 但是,我在目標構建中的任何地方都沒有看到資源文件夾; 我認為這是我問題的核心。 我只是不確定如何解決它。
我知道這個問題之前已經被問過很多次了,但是這個問題的另一個版本的答案對我沒有多大幫助。
我使用的是 NetBeans 11,這個項目在 Maven 構建系統上運行。 過去我沒有對 Maven 做太多的工作,所以如果這個問題非常容易解決,請原諒我。
有人知道我是如何處理這個錯誤的嗎?
編輯:問題與我的項目結構或代碼無關,如通過命令行使用mvn
運行時正確編譯的代碼所示。 因此,NetBeans 特別是它查看資源文件夾的方式存在問題。
將資源內容讀取為 Stream(而不是 URL 或文件路徑)
public static void main(String[] args) throws IOException {
InputStream in = Application.class.getClassLoader().getResourceAsStream("bern.png");
BufferedImage testImage = ImageIO.read(in);
ImageIcon icon = new ImageIcon(testImage);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.