java - Maven onejar插件,获取属性文件

标签 java maven uberjar

我正在使用 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/

相关文章:

java - 同步块(synchronized block)是否会导致所有写缓存刷新?

javax.transaction.RollbackException

java - 为什么不调用 java.util.stream.Stream#close()?

clojure - 莱恩奔跑vs莱因蹦床奔跑vs uberjar

maven - 如何构建具有依赖项的 uberjar

java - 如何将一般对象的数组列表作为参数?

java - 如何将项目从 gwt 2.5.1 升级到 gwt 2.7.0 ?

maven - Artifact 范围不可传递是什么意思?

java - 我的 fat jar 与Hadoop中的.jars冲突

maven - 找不到命名空间的 DestinationFactory - 使用 Jetty 创建 CXF 的 super JAR