我想在jar之外读取配置文件,该怎么办?
我尝试classloader.getResourceAsStream("config.xml")
并在Intellij中运行代码时成功。现在,我想将罐子构建到一个文件夹中,并将config.xml
放在同一个文件夹下,而不是放在罐子内部,但是程序无法检测到config.xml
。
是否有一种优美的方式来读取config.xml
而不是在代码中使用带有相对路径的File
,这在IDE中调试/运行时不起作用?
答案 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类路径。