我正在使用 Maven onejar 插件 ( https://code.google.com/p/onejar-maven-plugin/ ) 创建一个 uberjar。
我想访问位于类路径根目录中的属性文件,如下所示:
Properties prop = new Properties();
try {
prop.load(new FileInputStream("Db.properties"));
driver = prop.getProperty("driver");
url = prop.getProperty("url");
username = prop.getProperty("username");
password = prop.getProperty("password");
} catch (IOException ex) {
LOG.debug(ex.toString());
}
conn = null;
我的 log4j.properties 文件位于同一目录中,因为我可以进行日志记录...我的问题是什么? :/ 但没有找到 Db.properties。
最佳答案
FileInputStream用于从文件系统上的文件加载资源。 jar 内的文件不在文件系统上。您需要使用不同的 InputStream .
对于本例,使用 ClassLoader#getResourceAsStream(String)方法将被建议。它返回在类路径上找到的 InputStream 资源。像这样的东西:
InputStream is = getClass().getClassLoader().getResourceAsStream("/Db.properties");
应该可以工作。或者为了方便起见:
InputStream is = getClass().getResourceAsStream("/Db.properties");
值得注意的是,log4j.properties
起作用的原因是 Log4j 在设计上可以加载根类路径中的配置文件。
关于java - Maven onejar插件,获取属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576985/