我是StackOverflow的新手,在此处发布此问题之前,我已尽力解决此问题。我遇到了getResource()返回null的问题。我有一种预感,这是因为我在Mac上,这里的路径与PC上的路径不同(这个代码看起来工作得很好)。这是代码:
public class SampleClass
{
static String imgpath = "/theimage.png";
public static void main(String[] args)
{
System.out.println(imgpath);
System.out.println(SampleClass.class.getResource(imgpath));
try
{
BufferedImage image = ImageIO.read(SampleClass.class.getResource(imgpath));
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
src
,res
和bin
都位于同一目录中,theimage.png
位于res
内。
System.out.println(SampleClass.class.getResource("imgpath"));
给我null。
答案 0 :(得分:0)
你得到nullpointer异常,因为该文件夹中没有名为imgpath的图像
public class SampleClass
{
static String imgpath = "/theimage.png";
public static void main(String[] args)
{
System.out.println(imgpath);
System.out.println(SampleClass.class.getResource(imgpath));
try
{
BufferedImage image = ImageIO.read(SampleClass.class.getResource(imgpath));
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
我在Mac上也遇到了同样的问题。在这里,我现在如何从资源获取文件。例如,我有一个普通的Maven项目,在 src / main 中具有 resource 文件夹。在资源文件夹中,我有一个文件“ test.txt ”。
要获取文件的路径:
public class Utils {
public static String getFilePathInResources() {
URL url = Utils.class.getClassLoader().getResource("test.txt");
return url.getPath();
}
}
这里的文件名是硬性的,只是为了清楚起见,实际上,它实际上是方法中的一个参数。
如果将文件名设置为“ /test.txt ”,并带有“ /”-这将给出空。
URL url = Utils.class.getClassLoader().getResource("/test.txt"); // url == null