2012-09-13 21 views
9

私は起動時にjavassistクラスローダーに基づいてカスタムクラスローダーを作成し、実際のプログラムクラスを実行するjavaクラスを持っています。 私は次のエラーを取得しています: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". 

問題は、他のがカスタム1によって作成され、一方のオブジェクトは、元のクラスローダによって作成されているという事実に関連しています。
このエラーを解決する方法はありますか?事前に

おかげで、
Avnerは

答えて

16

-Dlog4j.ignoreTCL = trueを設定してみてください、それが役に立てば幸い。偽り問題about log4j

+1

下に示すような構成をプラグインのMavenのTomcatにlog4j.ignoreTCLを追加しますが魅力のように働いた;-)おかげで –

0

<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> 
関連する問題