Java Owner库@Config.Sources中${user.dir}无法定位配置文件问题
问题原因
Owner库的@Config.Sources注解默认不会自动解析${user.dir}这类系统属性占位符——它会把这个字符串直接当作文件路径的一部分去查找,而不是替换为实际的用户工作目录,因此找不到目标属性文件。
解决方法
方法1:使用Owner专属的系统属性占位符语法
Owner支持通过${sys:属性名}的格式明确指定解析系统属性,修改注解如下:
@Config.Sources(value = "${sys:user.dir}/src/test/resources/FrameworkConfig.properties") public interface FrameworkConfig extends Config { // 你的配置方法 }
方法2:创建Config实例时启用变量扩展
如果更习惯使用${user.dir}的原生写法,可以在通过ConfigFactory创建配置实例时,调用enableVariableExpansion()开启占位符解析:
FrameworkConfig config = ConfigFactory.create(FrameworkConfig.class) .enableVariableExpansion();
额外验证步骤
- 先打印
System.getProperty("user.dir")确认当前工作目录是否为Maven项目根目录(pom.xml所在路径); - 检查拼接后的完整路径是否与属性文件的实际路径一致,避免因目录结构差异导致找不到文件。
内容的提问来源于stack exchange,提问作者jba065
相关产品推荐
相关产品推荐

