我编写了一些代码并将其导出为jar文件。在这个jar中有一个名为automation.properties
的文件,其默认值是我使用
val automationPropertiesFileURL = getClass.getResource("/automation.properties")
if (automationPropertiesFileURL != null) {
val source = Source.fromURL(automationPropertiesFileURL)
config = new Properties()
config.load(source.bufferedReader())
}
但是当这个jar文件作为gradle
依赖项添加到C:\User\abc\.gradle
并且我想从当前项目中读取automation.properties
时,如何覆盖该位置并从中读取文件我的项目而不是jar文件本身?
答案 0 :(得分:5)
类加载器将从首先找到的位置加载文件。
在您的情况下,该文件存在于两个地方:
jar
依赖关系类加载器将找到哪个文件,
取决于“当前项目”的顺序和类路径的jar
依赖性。
这就是你需要审查的内容,
这是加载正确文件的关键。
您当前的代码是正确的, 这是类路径配置的问题。
答案 1 :(得分:2)
我认为
Source.fromInputStream(
getClass.getClassLoader.getResourceAsStream("/automation.properties")
)
应该有用。
答案 2 :(得分:2)
Java和SCALA一样,有不同的方法来读取属性文件,在我的一个答案中,我解释了从Jar内的属性文件和磁盘位置的属性文件中读取的区别。
在此处查看我的回答: Loading Properties from a JAR file (java 1.6)
这也适用于JAVA和SCALA! (注意,对于SCALA,你可以改变基本的sintax但是相同的概念)
希望它有所帮助!