Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 依赖项jar没有加载自己的资源文件_Java_Properties_Jar_Build_Gradle - Fatal编程技术网

Java 依赖项jar没有加载自己的资源文件

Java 依赖项jar没有加载自己的资源文件,java,properties,jar,build,gradle,Java,Properties,Jar,Build,Gradle,我有一个依赖项utilities.jar,它在编译时在根目录中有一个dev.properties文件(解编译时在src/main/resources中)。jar有一个类(PropertiesUtil.java),用于加载具有以下内容的属性: PropertiesUtil.class.getResourceAsStream("/dev.properties"); 此jar作为依赖项包含在我的webapp中。编译时,webapp在其根目录中有自己的dev.properties文件(在src/mai

我有一个依赖项
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编译成war。属性文件名必须相同,因为我传入了一个JVM属性

-Dproperty.filename=[dev|qa|prd].properties 
启动webapp时。此系统属性用于加载webapp和
utilities.jar的正确属性文件


jar是一个单独的项目,与
gradleclean build
打包并上传到工件服务器。在构建war时,webapp从工件服务器中提取
实用程序.jar

我认为出现这个问题是因为在类路径中有两个路径完全相同的不同文件(即使其中一个在jar中)。很可能一个
dev.properties
被覆盖

我建议将至少一个属性文件的路径更改为在项目根目录之外。例如,将实用程序的未编译
dev.properties
放在:

/src/main/resources/utilities/dev.properties
然后通过以下方式访问它:

PropertiesUtil.class.getClassLoader.getResourceAsStream("/utilities/dev.properties");

然后这两个属性文件将不再互相践踏,这将解决您的问题。

@durron597 edited post谢谢您的编辑。你能不能也加入一个gradle片段?@durron597我不认为这会有什么不同。build.gradle文件是直截了当的…我试图弄清楚jar中是否有两个
/dev.properties
副本,或者其中一个副本是否被覆盖。但我有一个主意,见answer@durron597oh我懂了。utilities.jar有自己的dev.properties打包到它自己包的根目录中。。。webapp在WEB-INF/classes/(未爆炸时)中打包了自己的dev.properties