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

Maven项目读取属性文件异常:仅加载POM编码属性的问题排查

解决Properties文件加载异常仅含POM编码属性的问题

看起来你踩了properties-maven-plugin的一个常见误区——这个插件的write-project-properties目标并不是用来复制你手动编写的属性文件的,它的核心作用是把pom.xml中定义的所有项目属性写入到指定的输出文件中,这就导致你原本放在resources/property/db.properties的内容被插件覆盖,最终只剩下pom里的编码属性!下面分两种情况给你解决方案:

情况1:只想使用自己编写的db.properties文件

这种情况完全不需要这个插件,Maven默认会自动将src/main/resources下的所有文件复制到编译后的target/classes目录(也就是classpath根目录):

  1. 移除pom中配置的properties-maven-plugin
  2. 根据文件实际位置调整加载代码:
    你的文件编译后位于classpath:/property/db.properties,可以用两种正确的加载方式:
    // 方式1:通过类加载器,从classpath根开始查找,不需要开头斜杠
    this.getClass().getClassLoader().getResourceAsStream("property/db.properties");
    
    或者更可靠的绝对路径写法(避免类加载器路径歧义):
    // 方式2:通过类对象,开头带斜杠表示从classpath根开始查找
    this.getClass().getResourceAsStream("/property/db.properties");
    

情况2:确实需要用插件生成/合并属性文件

如果你的需求是把pom中定义的数据库配置(比如地址、账号)注入到db.properties中,推荐用Maven的资源过滤功能,而不是write-project-properties(它会完全覆盖你的文件):

  1. 在pom.xml的<properties>节点声明需要的属性:
    <properties>
        <db.url>jdbc:mysql://localhost:3306/mydb</db.url>
        <db.username>root</db.username>
        <db.password>123456</db.password>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    
  2. 在你的db.properties中用占位符引用这些属性:
    url=${db.url}
    username=${db.username}
    password=${db.password}
    
  3. 配置Maven资源插件开启过滤:
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>property/db.properties</include>
                </includes>
            </resource>
        </resources>
    </build>
    
    这样编译后,Maven会自动把占位符替换成pom中的实际值,同时保留你文件里的其他内容。

验证步骤

执行mvn clean compile后,打开target/classes/property/db.properties查看内容,确认是你预期的结果。如果加载还是有问题,可以打印当前类加载器的根路径来排查:

System.out.println(this.getClass().getClassLoader().getResource("").getPath());

检查输出路径下是否存在property/db.properties文件,确认文件路径和加载代码匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:43:18