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

Maven/Gradle项目加载图片报input==null异常求助

问题排查与解决方案

这个问题我碰到过好多次,核心原因是Maven/Gradle的资源文件打包规则和NetBeans默认的普通Java项目不一样,导致你的图片资源没有被正确打包到类路径中,所以getResource()返回null,触发了IllegalArgumentException。

为什么NetBeans能正常运行?

NetBeans的普通Java项目会把src目录下的所有文件(不管是不是Java文件)都直接放到类路径里,所以你的images目录能被正确识别。但Maven/Gradle遵循“约定优于配置”的原则,默认只会把src/main/resources目录下的文件打包到类路径的根目录,其他目录的非Java文件会被忽略。

解决方案(按推荐程度排序)

1. 调整资源目录结构(最推荐)

把你的images文件夹移动到src/main/resources目录下,这样Maven/Gradle会自动把它打包到classpath根目录,你的现有代码getResource("/images/1.jpg")不需要任何修改就能正常工作。

2. 修改构建工具配置,强制打包指定目录

如果不想移动目录,可以修改Maven或Gradle的配置,让它们把images目录当成资源目录处理:

  • Maven(修改pom.xml):
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>images/**/*</include>
                </includes>
            </resource>
        </resources>
    </build>
    
  • Gradle(修改build.gradle):
    sourceSets {
        main {
            resources {
                srcDirs += 'src/main/java'
                includes += 'images/**/*'
            }
        }
    }
    

3. 验证资源是否被正确打包

修改后,你可以检查项目构建后的目录:

  • Maven:查看target/classes目录下是否有images/1.jpg
  • Gradle:查看build/classes/java/main目录下是否有images/1.jpg
    如果文件存在,说明资源打包正常,代码就能正确加载图片了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:11:45