2016-10-11 45 views
1

下面的代碼將產生uri = ...NullPointerException異常上獲得資源

我試過ClassLoader.getSystemResourcegetClass().getResourcegetClass().getClassLoader().getResource

不要母校如果刪除/開頭或結尾刪除一個NullPointerException,它仍然會產生一個NullPointerException ..

public class Main { 
    public static void main(String[] args) { 
     new Main(); 
    } 

    private Main() { 
     URI uri = null; 

     try { 
      uri = ClassLoader.getSystemResource("/resources/images/flags/").toURI(); 
     } catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } 

     if (uri != null) { 
      System.out.println(uri.toString()); 

      File folder = new File(uri); 

      for (File file : folder.listFiles()) { 
       System.out.println(file.getName()); 
      } 
     } 
    } 
} 

項目結構:

Structure

+2

你嘗試改變'「/資源的相對路徑/ images/flags /「'到'」/ images/flags /「'部分?資源目錄是類路徑的一部分 –

+1

使用''images/flags /'',它工作! – yooouuri

+0

如果您曾經從.jar文件運行該代碼,它將會失敗。 – VGR

回答

4

請嘗試不使用「資源」,因爲這只是文件夾的名稱。 此文件夾的內容將被複制到已編譯的類中。

+0

@SpaceCowboy Intellij以這種方式展示它! – yooouuri

+0

使用''圖像/標誌/'',它的工作! – yooouuri

+0

這是2個文件夾圖像/標誌 – Ash

0

這是我評論的答案。由於resource已經是CLASSPATH的一部分,你必須改變:

"/resources/images/flags/" 

"/images/flags/" 

此外,您還可以嘗試像"images/flags/"

相關問題