Maven onejar插件,获取属性文件

问题描述:

我正在使用Maven onejar插件(https://code.google.com/p/onejar-maven-plugin/)创建uberjar。Maven onejar插件,获取属性文件

我要访问的属性文件,这是在我的类路径中这样根:

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。

+0

Db.properties是否打包在jar中? – 2013-03-22 18:07:03

+0

是的,我打开我的提醒.one-jar.jar - > main - > reminder.jar,并在这个jar文件中是我的db.properties文件在相同的路径log4j.properties – krackmoe 2013-03-22 18:08:26

FileInputStream用于从位于文件系统上的文件加载资源。文件系统中没有jar文件。您需要使用不同的InputStream

对于这种情况,建议使用ClassLoader#getResourceAsStream(String)方法。它返回在类路径中找到的InputStream资源。例如:

InputStream is = getClass().getClassLoader().getResourceAsStream("/Db.properties"); 

应该工作。或者为了方便:

InputStream is = getClass().getResourceAsStream("/Db.properties"); 

值得注意的是,log4j.properties作品是因为Log4j的设计可以在根类路径加载配置文件的原因。

+1

Mh ...它仍然没有工作。 InputStream i = getClass()。getResourceAsStream(“Db.properties”); \t尝试{ \t \t prop.load((FileInputStream)i); – krackmoe 2013-03-22 18:21:47

+0

我懂了!我在Db.properties前加了一个斜杠!谢谢。 – krackmoe 2013-03-22 18:27:48

+0

@krackmoe感谢您的纠正。 – 2013-03-22 18:35:35