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

Eclipse为src/main/resources添加**排除规则后,如何读取资源文件?

解决Eclipse Maven项目中src/main/resources资源文件读取问题

嘿,我之前也碰到过这个疑惑!先给你吃个定心丸:Eclipse给src/main/resources加排除规则真不是bug,是Maven Eclipse插件的正常设计~

为什么会有这个排除规则?

Maven本身会自动把src/main/resources下的所有文件复制到项目的target/classes目录(这才是类路径实际指向的位置)。Eclipse标记源文件夹里的资源为排除,是为了避免在编译过程中重复处理这些文件——毕竟最终运行时读取的是target/classes里的副本,完全不影响功能。

正确读取资源文件的几种方式

下面给你几个靠谱的实现方法,都是生产环境通用的:

1. 使用当前类的getResourceAsStream()

适合读取和当前类同包(或相对路径)的资源文件:

// 假设你的类在com.example包下,读取resources/com/example/config.properties
InputStream is = getClass().getResourceAsStream("config.properties");

// 如果是resources根目录下的文件,记得加斜杠开头
InputStream is = getClass().getResourceAsStream("/app.properties");

2. 使用ClassLoader的getResourceAsStream()

这种方式不需要考虑当前类的包路径,直接从类路径根目录查找:

InputStream is = getClass().getClassLoader().getResourceAsStream("app.properties");
// 注意:这里的路径不要加开头的斜杠

3. 不推荐:直接读取源文件夹文件(仅调试用)

如果你只是开发调试时想直接读源文件夹里的文件,可以用File类,但打包成JAR后这种方式会失效,不建议用于生产:

File file = new File("src/main/resources/app.properties");
InputStream is = new FileInputStream(file);

验证方法

你可以去项目的target/classes目录看看,src/main/resources里的文件肯定已经被Maven复制过去了——类路径读取的就是这里的文件,完全不受Eclipse排除规则的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:38:18