簡體   English   中英

無法訪問資源文件夾中的文件

[英]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() 據我了解, ClassgetResource()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.

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