Java 获取资源时出现NullPointerException
以下代码将在Java 获取资源时出现NullPointerException,java,nullpointerexception,resources,Java,Nullpointerexception,Resources,以下代码将在uri=… 我尝试了ClassLoader.getSystemResource,getClass().getResource或getClass().getClassLoader().getResource 不管我是在开始还是结束时删除/,它仍然会生成NullPointerException public class Main { public static void main(String[] args) { new Main(); } pr
uri=…
我尝试了ClassLoader.getSystemResource
,getClass().getResource
或getClass().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());
}
}
}
}
项目结构:
请尝试不使用“资源”,因为这只是文件夹的名称。
此文件夹的内容将被复制到已编译的类中。请尝试不使用“资源”,因为这只是文件夹的名称。
此文件夹的内容将被复制到已编译的类中。这是我的评论的答案。由于
resource
已经是类路径的一部分,您必须更改:
"/resources/images/flags/"
到
此外,您还可以尝试相对路径,如
“images/flags/”
这是我的评论的答案。由于resource
已经是类路径的一部分,您必须更改:
"/resources/images/flags/"
到
此外,您还可以尝试相对路径,如
“images/flags/”
是否尝试将“/resources/images/flags/”
更改为“/images/flags/”
部分?resources目录是classpathUsedimages/flags/
的一部分,它工作正常!如果您从.jar文件运行此代码,它将失败。@VGR您能解释一下吗?.jar文件实际上是一个zip归档文件,其中包含一些特定于Java的条目。当类和资源位于存档中时,它们不是单独的文件,只是存档中字节的子序列。这意味着.jar中此类资源的URI不是文件:
URI,因此尝试将其转换为文件将引发异常。请参阅。您是否尝试将“/resources/images/flags/”
更改为“/images/flags/”
部分?resources目录是classpathUsedimages/flags/
的一部分,它工作正常!如果您从.jar文件运行此代码,它将失败。@VGR您能解释一下吗?.jar文件实际上是一个zip归档文件,其中包含一些特定于Java的条目。当类和资源位于存档中时,它们不是单独的文件,只是存档中字节的子序列。这意味着.jar中此类资源的URI不是文件:
URI,因此尝试将其转换为文件将引发异常。请参阅。这是两个文件夹图像/标志。这是两个文件夹图像/标志