在Spring中,我想让我的浏览器显示图像。图像位于我的主项目中,即
> myproject
- src
- target
- img.png
这意味着img.png位于root中,因此我不提供任何路径但返回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));
关于此问题的评论标记为关闭:
返回 URL对象;如果未找到具有此名称的资源,则为null
即使我尝试将null
添加到不同位置,我的代码也会返回img.png
。
该问题的答案是该文件必须与this
位于同一目录中,但在此问题中,即使我将图像添加到类DataService
所在的同一位置,它也会不行。
答案 0 :(得分:1)
使用Maven
完成项目设置后,将图像添加到resources
文件夹即可。代码没有任何变化:
DataService.class.getClassLoader().getResource("img.png")
答案 1 :(得分:1)
这里的问题是/src
可能是类路径的根(它取决于你如何编译项目),因此你应该把img.png放到src
文件夹和下面的代码中会工作
DataService.class.getResourceAsStream("img.png");
通常,getResourceAsStream()从类路径的根目录中查找文件。
答案 2 :(得分:0)
你只需做一个小改动,它的getResourceAsStream(&#34; /img.png")不是getResourceAsStream(&#34; img.png&#34;)。
我希望这会有所帮助。