所以,我尝试了apache log4j库,并设法让所有的东西都能正常工作。我运行了一次程序,它完成了所有的记录。然后,我又去运行它,它崩溃了。我一次又一次地尝试了程序崩溃。加载多个资源的问题 - log4j.properties
我有一个属性/目录中的几个.properties文件。我使用的是两种不同的.properties
文件并加载它们分别都用getResource
和getResourceAsStream
:
第一顺序来配置我的记录:
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");)
究其原因,我认为有getResource
和getResourceAsStream
之间的冲突可能是因为坠机实际发生后,当我拨打:
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
我明白这将如何与日志记录,但至于为其他.properties文件(包含常量)的某种自动资源加载,我不认为这是可能的。或者,如果是这样,我该怎么做? – 2012-02-07 20:58:53
您必须重新标记您的问题并更改标题。现在听起来像log4j具体问题。 – 2012-02-07 21:01:21
对不起,我是本网站的新手,如何编辑我的帖子? – 2012-02-07 21:03:52