获取资源的NullPointerException

时间:2016-10-11 15:45:46

标签: java nullpointerexception resources

以下代码将在uri = ...

上产生NullPointerException

我尝试了ClassLoader.getSystemResourcegetClass().getResourcegetClass().getClassLoader().getResource

如果我在开头删除/或者在结尾删除它,那么它仍会产生一个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 个答案:

答案 0 :(得分:4)

请不要使用" resources",因为这只是文件夹的名称。 此文件夹的内容将复制到已编译的类中。

答案 1 :(得分:0)

这是我的评论的答案。由于ld -r已经是类路径的一部分,因此您必须更改:

resource

"/resources/images/flags/" 

此外,您可以尝试"/images/flags/"

之类的相对路径