Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getResourceAsStream返回NullpointerException_Java_Spring Boot_Inputstream_Request Mapping - Fatal编程技术网

Java getResourceAsStream返回NullpointerException

Java getResourceAsStream返回NullpointerException,java,spring-boot,inputstream,request-mapping,Java,Spring Boot,Inputstream,Request Mapping,在春天,我想让图像显示在我的浏览器上。该图像位于我的主要项目中,即 > myproject - src - target - img.png 这意味着img.png在根目录中,因此我不提供任何路径,但它返回一个NullPointerException。我尝试在src中添加图像,并将路径更改为src\img.png,但仍然给出了NPE 请注意,这个项目使用的是Maven 堆栈跟踪: java.lang.NullPointerException: null at o

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

> 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));
InputStream in=DataService.class.getResourceAsStream(“img.png”);
最终HttpHeaders=新HttpHeaders();
headers.setContentType(MediaType.IMAGE\u PNG);
setData(新的ResponseEntity(IOUtils.toByteArray(in),headers,HttpStatus.CREATED));
对标记为结束的问题的评论:

  • 这个问题与编程有关,因为API说:
返回 URL对象,如果找不到具有此名称的资源,则为null

即使我尝试将
img.png
添加到不同的位置,我的代码仍返回
null

  • 此问题不是此问题的重复:

该问题的答案是文件必须与
this
位于同一目录中,但在这个问题中,即使我将图像添加到class
DataService
所在的同一位置,它也不起作用

您只需要做一个小小的更改,它是getResourceAsStream(“/img.png”)而不是getResourceAsStream(“img.png”)


我希望这会有所帮助。

您只需要做一个小小的更改,它是getResourceAsStream(/img.png”)而不是getResourceAsStream(“img.png”)


我希望这会有所帮助。

当使用
Maven
完成项目设置时,将图像添加到
resources
文件夹工作正常。代码中没有任何更改:

DataService.class.getClassLoader().getResource("img.png")

当使用
Maven
完成项目设置时,将图像添加到
resources
文件夹会起作用。代码中没有任何更改:

DataService.class.getClassLoader().getResource("img.png")

这里的问题是,
/src
可能是类路径的根(这取决于您如何编译项目),因此您应该将img.png放到
src
文件夹中,下面的代码可以工作

DataService.class.getResourceAsStream(“img.png”)


一般来说,getResourceAsStream()从类路径的根查找文件。

这里的问题是
/src
可能是类路径的根(这取决于您如何编译项目),因此您应该将img.png放入
src
文件夹,下面的代码可以工作

DataService.class.getResourceAsStream(“img.png”)


一般来说,getResourceAsStream()从类路径的根目录中查找文件。

它实际上是
返回
a
NullPointerException
,还是仅仅意味着它返回
null
?我将更新我的答案,这就是它所说的!将它放在与
DataService.java
相同的目录中,并使用
getResourceAsStream(“img.png”)
构建项目并查看Build或target文件夹以检查img.png文件是否存在。如果是maven项目,则将图像放在src/resources文件夹中。@Braj因为是maven项目,添加到资源中是否真的有效
return
a
NullPointerException
,或者您的意思是它返回
null
?我将更新我的答案,这就是它所说的!将它放在与
DataService.java
相同的目录中,并使用
getResourceAsStream(“img.png”)
构建项目并查看Build或target文件夹以检查img.png文件是否存在。如果是maven项目,则将映像放在src/resources文件夹中。@Braj因为是maven项目,所以添加到资源WorkedId不适用于该更改您确定NPE是因为映像路径吗?因为下面的代码对我来说非常好:
BufferedImage img=ImageIO.read(DataService.class.getResourceAsStream(“/img.jpg”);如果(img!=null){System.out.println(“not null”);}
无法处理该更改,您确定NPE是因为映像路径吗?因为下面的代码对我来说非常好:
BufferedImage img=ImageIO.read(DataService.class.getResourceAsStream(“/img.jpg”);如果(img!=null){System.out.println(“非null”);}