【发布时间】:2015-04-01 18:05:28
【问题描述】:
我创建了一个函数 (Java),它应该从文件中读取 bytes 并将它们打印到控制台:
public void loadPixels(int size){
ClassLoader cl = this.getClass().getClassLoader();
pixels = new byte[size];
try{
InputStream stream = cl.getResource("res/" + fileName).openStream();
stream.read(pixels);
System.out.println(pixels.toString());
stream.close();
}catch(Exception e){
e.printStackTrace();
}
}
问题是,我收到了NullPointerException 的电话
InputStream stream = cl.getResource("res/" + fileName).openStream();
对于我要打开的文件,名称是“font.spt”,这也是fileName 持有的值。该文件位于项目根目录的“res”文件夹中,我目前使用的是 Eclipse IDE。
是我对文件路径的处理方法错误,还是其他问题?
回顾一下:fileName 指向“font.spt”,它位于 bin 目录中的“res”文件夹下。
编辑:包含 .spt 文件的“res”文件夹现在位于项目的“bin”下,而不是根目录下,但我仍然收到错误消息。从 IDE 运行或作为导出的 .jar 运行时,我仍然得到NullPointerException,我应该将这些文件放在哪里?谁能给我截图或例子?
【问题讨论】:
-
您可以使用压缩工具打开 .jar 文件并找到您的文件所在的路径或者您有 web 项目吗?
-
ClassLoader 从类路径加载资源。如果该文件位于项目的根目录,则 Eclipse 不会将其编译到输出目录,因此在运行时不在类路径中。如果您希望文件在运行时位于类路径中,请将其放在源目录中。
-
带有"res/" + 文件名,是不是意味着我想在"src" 下创建一个名为"res" 的文件夹,然后把文件放在那里?
-
是的。把它放在你的 src 文件夹中
标签: java classloader getresource