0

在 Spring 中,我想让图像显示在我的浏览器上。该图像位于我的主要项目中,即

> myproject
   - src
   - target
   - img.png

这意味着 img.png 位于根目录中,因此我不提供任何路径,但它返回一个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,它也不起作用。

4

3 回答 3

1

使用 完成项目设置后Maven,将图像添加到resources文件夹即可。代码中没有任何变化:

DataService.class.getClassLoader().getResource("img.png")
于 2016-03-31T18:12:35.700 回答
1

这里的问题/src可能是类路径的根目录(这取决于你如何编译项目),所以你应该把 img.png 放到src文件夹中,下面的代码就可以了

DataService.class.getResourceAsStream("img.png");

通常 getResourceAsStream() 从类路径的根目录中查找文件。

于 2016-03-31T18:17:46.577 回答
0

你只需要做一个小改动,它是 getResourceAsStream("/img.png") 而不是 getResourceAsStream("img.png")。

我希望这将有所帮助。

于 2016-03-31T16:34:50.960 回答