我正在使用Property Loader实用程序在我的项目(MyProject.jar)中打包为jar(PropLoader.jar)。我的属性文件位于MyProject.jar中的不同包中。 com.my.project.resources.MyPropertyFile.properties和我调用PropLoader util的(主类:PropLoader),其在输入期望一个propfile名称为:当loader loader是一个不同的罐子时,如何在Jar中加载属性文件
PropLoader.loadProperties("/com/my/project/resources/MyPropertyFile.properties")
的类文件,其中上面的代码是在: com.my.project.resources.MyLogic
实用程序jar在内部使用getResourcesAsStream。
但是这会导致空指针异常:
SEVERE: java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
是的。如果将代码放在类com.my.project.resources.MyLogic中,我可以加载属性文件。但是,如果我将属性文件名发送到PropLoader.loadProperties(),那么它不再能够找到该文件。 – Shilp 2012-03-28 17:48:19
“PropLoader”可能由不同于你自己的类的类加载器加载。在这种情况下,将根据PropLoader的类加载器的上下文查找资源。在PropLoader上是否还有另一种可以使用的方法(例如,传递从您的类中打开的资源流)?更多关于[主题](http://www.javaworld.com/javaworld/javaqa/2003-06/01-qa-0606-load.html) – Attila 2012-03-28 18:04:46
你是对的。 PropLoader内部使用this.getClass()。getResourceAsStream(propertyFileName)。由于这是一个遗留的jar,我无法更改此实现。有什么办法可以解决这个问题吗? – Shilp 2012-03-28 19:13:48