我有一个依赖项utilities.jar
,在编译时在根目录中有一个dev.properties
文件(在未编译时在src/main/resources
中)。 jar有一个类(PropertiesUtil.java
),用于加载属性:
PropertiesUtil.class.getResourceAsStream("/dev.properties");
此jar包含在我的webapp中作为依赖项。编译时,webapp在其根目录中有自己的dev.properties文件(在src/main/resources
文件夹中以未编译的形式)。
utilities.jar不会加载自己的内部dev.properties
文件,而是加载webapp的dev.properties
文件。
我尝试了不同的方法,比如
PropertiesUtil.class.getClassLoader.getResourceAsStream("dev.properties");
没有成功。
我正在使用Gradle将utilities.jar
和webapp编译成战争。属性filename必须相同,因为我传入了一个JVM属性
-Dproperty.filename=[dev|qa|prd].properties
启动webapp时。此系统属性用于加载webapp和utilities.jar
的正确属性文件。
utilities.jar是一个单独的项目,与gradle clean build
打包并上传到工件服务器。在构建战争时,webapp从工件服务器中提取utilities.jar
。
答案 0 :(得分:0)
我认为这个问题正在发生,因为你有两个不同的文件在你的类路径中有完全相同的路径(即使一个在jar中)。很可能一个Address
被覆盖。
我建议将至少一个属性文件的路径更改为项目根目录之外。例如,将实用程序的未编译dev.properties
放在:
dev.properties
然后使用:
访问它/src/main/resources/utilities/dev.properties
然后这两个属性文件将不再相互踩踏,这应该可以解决您的问题。