所以,我嘗試了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