Java 加载多个资源时出现问题-log4j.properties

Java 加载多个资源时出现问题-log4j.properties,java,resources,log4j,Java,Resources,Log4j,所以,我正在试用ApacheLog4J库,我设法让所有东西都正常工作。我运行了一次我的程序,它完美地完成了所有的日志记录。然后,我又去运行它,它崩溃了。我试了一次又一次,程序崩溃了 我在properties/目录中有几个.properties文件。我正在使用两个不同的.properties文件,并分别使用getResource和getResourceAsStream加载它们: 首先要配置我的记录器: PropertyConfigurator.configure(MyClass.class.get

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

我在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]. 不再返回有效的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 属性$LineReader.readLine()行:不可用[局部变量不可用] Properties.load0(Properties$LineReader)行:不可用 属性。加载(InputStream)行:不可用
即使记录器本身与
Properties.load()
及其
InputStream
之间没有链接(但它们都是用
.Properties
文件初始化的)

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

我了解如何使用日志记录,但对于另一个.properties文件(包含常量的文件)进行某种自动资源加载我认为这是不可能的。或者,如果可能的话,我该怎么做?你必须重新标记你的问题并更改标题。现在听起来像是log4j特定的问题。嗯……每当我去更改标题或正文中的任何内容并单击“保存编辑”时,我会得到:你的帖子似乎包含未正确格式化为代码的代码。请缩进使用“代码”工具栏按钮或CTRL+K键盘快捷键按4个空格显示所有代码。有关更多编辑帮助,请单击[?]工具栏图标。而且,无论我做了什么更改,或者我缩进了多少代码体,并在任何看起来像代码的东西周围打上记号。它仍然不允许我保存帖子。嘎。这很令人沮丧。好吧,在做了一些检查之后。我意识到,让我非常懊恼的是,我所收到的错误与资源完全无关这实际上是因为我将我的主方法移动到了项目中的另一个包中,忘记了更新搜索.properties文件的路径。叹气。但是如果有人好奇的话,上述方法非常适合将两个不同的属性文件添加到项目中(假设这些属性文件位于您从顶层选择的路径中的目录中,或者位于主方法正在执行的任何位置) Properties$LineReader.readLine() line: not available [local variables unavailable] Properties.load0(Properties$LineReader) line: not available Properties.load(InputStream) line: not available