2016-10-11 38 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/"

相关问题