2012-02-07 104 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