You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven执行单元测试失败 无法读取图片资源报input==null错误

解决方案

该异常本质是ImageIO.read接收的输入流为空,对应你读取的图片资源未被正确加载到测试运行的类路径中,修复步骤如下:

  • 检查资源存放位置:测试专用的图片资源请放到src/test/resources/Sprites目录下,主代码通用的资源放到src/main/resources/Sprites目录下,Maven默认只会打包这两个资源目录下的文件到类路径。
  • 核对pom.xml资源配置:如果你的pom中自定义了build.resources或build.testResources规则,确保没有排除png格式文件,参考配置如下:
<build>
  <!-- 主代码资源配置 -->
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.png</include>
        <include>**/*</include> <!-- 可根据需求调整需要打包的资源类型 -->
      </includes>
    </resource>
  </resources>
  <!-- 测试代码资源配置 -->
  <testResources>
    <testResource>
      <directory>src/test/resources</directory>
      <includes>
        <include>**/*.png</include>
      </includes>
    </testResource>
  </testResources>
</build>
  • 修正资源加载路径:getResourceAsStream的路径规则为:开头不带/时是相对当前类的包路径查找,开头带/时从类路径根目录查找。如果Sprites目录直接放在资源目录下,正确写法为:
    ImageIO.read(getClass().getResourceAsStream("/Sprites/player_1.png"))
    注意路径大小写必须和实际文件完全匹配,类Unix系统对路径大小写敏感。
  • 验证打包结果:执行mvn clean test-compile后,打开target/test-classes目录,确认Sprites目录和对应的png文件存在,不存在则说明资源配置或存放路径有误。
  • 额外排查:如果依然报错,可在加载资源前打印类路径根目录位置,确认资源存放路径是否正确:
    System.out.println(getClass().getClassLoader().getResource("").getPath());

内容的提问来源于stack exchange,提问作者SLPRYSQUID

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:27:04