2012-09-13 70 views
9

我有一個java類,它創建一個基於javassist類加載器的自定義類加載器啓動,然後運行真正的程序類。 我收到以下錯誤:配置org.apache.log4j.ConsoleAppender與自定義類加載器

log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a   
"org.apache.log4j.Appender" variable. 
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
log4j:ERROR [[email protected]] whereas object of type 
log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by 
[[email protected]]. 
log4j:ERROR Could not instantiate appender named "stdout". 

的問題是關係到一個對象由最初的類加載器創建的,而另一種是由定製一個創建的事實。
有沒有辦法解決這個錯誤?

由於提前,
阿夫納

回答

16

請嘗試設置-Dlog4j.ignoreTCL = TRUE,希望它幫助。一個simular問題about log4j

+1

工作就像一個魅力;-)謝謝 –

0

添加log4j.ignoreTCL在Maven的Tomcat插件的配置如下圖所示

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <port>${local.server.port}</port> 
     <update>true</update> 
     <systemProperties> 
     <log4j.configurationFile>${user.dir}\conf\log4j2.xml</log4j.configurationFile> 
     <log4j.ignoreTCL>true</log4j.ignoreTCL> 
     <java.util.logging.manager>org.apache.logging.log4j.jul.LogManager</java.util.logging.manager> 
     </systemProperties> 
     <contextReloadable>true</contextReloadable> 
    </configuration> 
</plugin> 
相關問題