getResourceAsStream returns NullpointerException
getResourceAsStream returns NullpointerException
在 Spring 中,我想让图像显示在我的浏览器上。该图像位于我的主要项目中,即
> myproject
- src
- target
- img.png
这意味着 img.png 在根目录中,所以我没有提供任何路径,但它 returns 和 NullPointerException
。我尝试在 src 中添加图像并将路径更改为 src\img.png
但仍然给出 NPE。
请注意,此项目使用 Maven。
堆栈跟踪:
java.lang.NullPointerException: null
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:462) ~[commons-io-2.4.jar:2.4]
这是我使用的代码:
InputStream in = DataService.class.getResourceAsStream("img.png");
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);
result.setData(new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED));
关于此问题的评论被标记为关闭:
- 这个问题与编程有关,因为 API getResourceAsStream 是这样说的:
Returns
A URL object or null if no resource with this name is found
即使我尝试将 img.png
添加到不同的位置,我的代码仍返回 null
。
- 这个问题不是这个问题的重复:getResourceAsStream() is always returning null
该问题的答案说该文件必须与 this
在同一目录中,但在这个问题中,即使我将图像添加到 class [=19 的相同位置=] 是,它没有用。
你只需要做一个小的改变,它是 getResourceAsStream("/img.png") 而不是 getResourceAsStream("img.png").
希望对您有所帮助。
使用 Maven
完成项目设置后,将图像添加到 resources
文件夹即可。代码没有任何变化:
DataService.class.getClassLoader().getResource("img.png")
这里的问题是/src
可能是类路径的根(这取决于你如何编译项目),所以你应该把img.png放到src
文件夹并且下面的代码可以工作
DataService.class.getResourceAsStream("img.png");
通常 getResourceAsStream() 从类路径的根目录中查找文件。
在 Spring 中,我想让图像显示在我的浏览器上。该图像位于我的主要项目中,即
> myproject
- src
- target
- img.png
这意味着 img.png 在根目录中,所以我没有提供任何路径,但它 returns 和 NullPointerException
。我尝试在 src 中添加图像并将路径更改为 src\img.png
但仍然给出 NPE。
请注意,此项目使用 Maven。
堆栈跟踪:
java.lang.NullPointerException: null
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:462) ~[commons-io-2.4.jar:2.4]
这是我使用的代码:
InputStream in = DataService.class.getResourceAsStream("img.png");
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);
result.setData(new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED));
关于此问题的评论被标记为关闭:
- 这个问题与编程有关,因为 API getResourceAsStream 是这样说的:
Returns A URL object or null if no resource with this name is found
即使我尝试将 img.png
添加到不同的位置,我的代码仍返回 null
。
- 这个问题不是这个问题的重复:getResourceAsStream() is always returning null
该问题的答案说该文件必须与 this
在同一目录中,但在这个问题中,即使我将图像添加到 class [=19 的相同位置=] 是,它没有用。
你只需要做一个小的改变,它是 getResourceAsStream("/img.png") 而不是 getResourceAsStream("img.png").
希望对您有所帮助。
使用 Maven
完成项目设置后,将图像添加到 resources
文件夹即可。代码没有任何变化:
DataService.class.getClassLoader().getResource("img.png")
这里的问题是/src
可能是类路径的根(这取决于你如何编译项目),所以你应该把img.png放到src
文件夹并且下面的代码可以工作
DataService.class.getResourceAsStream("img.png");
通常 getResourceAsStream() 从类路径的根目录中查找文件。