2012-02-07 81 views
0

所以,我尝试了apache log4j库,并设法让所有的东西都能正常工作。我运行了一次程序,它完成了所有的记录。然后,我又去运行它,它崩溃了。我一次又一次地尝试了程序崩溃。加载多个资源的问题 - log4j.properties

我有一个属性/目录中的几个.properties文件。我使用的是两种不同的.properties文件并加载它们分别都用getResourcegetResourceAsStream

第一顺序来配置我的记录:

PropertyConfigurator.configure(MyClass.class.getResource("properties/MyClassconfig.properties")); 
以加载所有在程序中使用的常量

然后:

properties.load(MyClass.class.getResourceAsStream("properties/constants.properties")); 

正如我之前所说,在第一次运行时,这工作完美。从第二轮,我得到这个错误:

 
log4j:ERROR Could not read configuration file from URL [null]. 
java.lang.NullPointerException 
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:522) 
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:415) 
    at com.package.package2.common.main.MyClass.main(MyClass.java:69) 
log4j:ERROR Ignoring configuration file [null]. 

因此,该行:

MyClass.class.getResource("properties/MyClassconfig.properties") 

不再返回一个有效的URL,而是它的返回null。我想这是因为在第一次运行(如输入流后,开了些InputStream保持开放:

MyClass.class.getResource("properties/MyClassconfig.properties");) 

究其原因,我认为有getResourcegetResourceAsStream之间的冲突可能是因为坠机实际发生后,当我拨打:

properties.load(MyClass.class.getResourceAsStream("properties/constants.properties")); 

我得到:

 
Properties$LineReader.readLine() line: not available [local variables unavailable] 
Properties.load0(Properties$LineReader) line: not available 
Properties.load(InputStream) line: not available  

即使有记录器之间没有联系本身ND的Properties.load()及其InputStream

回答

0

为什么不直接在你的类路径log4j.properties并与所有的手动加载资源做掉(比他们都与.properties文件初始化等)?

+0

我明白这将如何与日志记录,但至于为其他.properties文件(包含常量)的某种自动资源加载,我不认为这是可能的。或者,如果是这样,我该怎么做? – 2012-02-07 20:58:53

+0

您必须重新标记您的问题并更改标题。现在听起来像log4j具体问题。 – 2012-02-07 21:01:21

+0

对不起,我是本网站的新手,如何编辑我的帖子? – 2012-02-07 21:03:52