如何从jar外部的资源文件读取

时间:2019-08-13 16:12:32

标签: java

我想在jar之外读取配置文件,该怎么办?
我尝试classloader.getResourceAsStream("config.xml")并在Intellij中运行代码时成功。现在,我想将罐子构建到一个文件夹中,并将config.xml放在同一个文件夹下,而不是放在罐子内部,但是程序无法检测到config.xml

是否有一种优美的方式来读取config.xml而不是在代码中使用带有相对路径的File,这在IDE中调试/运行时不起作用?

1 个答案:

答案 0 :(得分:1)

是的,将其转换为系统属性,并将其提供给运行任何Java进程/应用程序的任何事物。

假设您在config.xml内有一个/some/path/down/the/line/文件,那么您可以这样做:java --classpath ... -Dapp.config=/some/path/down/the/line/config.xml tld.domain.Application

那么您在Java代码中要做的就是引用该名称/路径:final String configFile = System.getProperty("app.config");,并使用任何众所周知的例程从那里读取它。

基本上,您必须确保文件/路径/位置以某种方式提供给Java类路径。