有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

加载多个资源log4j的java问题。性质

所以,我正在试用ApacheLog4J库,我设法让所有东西都正常工作。我运行了一次我的程序,它完美地完成了所有的日志记录。然后,我又去运行它,它崩溃了。我试了一次又一次,程序崩溃了

我有一些。属性/目录中的属性文件。我正在使用两个不同的.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    

即使记录器本身与Properties.load()及其InputStream之间没有链接(除了它们都用.properties文件初始化)


共 (1) 个答案

  1. # 1 楼答案

    为什么不在类路径中添加log4j.properties并取消所有手动资源加载