10

起動時にjavassistクラスローダーに基づいてカスタムクラスローダーを作成し、実際のプログラムクラスを実行するJavaクラスがあります。次のエラーが表示されます。

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 [javassist.Loader@6f97b10a] whereas object of type 
log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by 
[java.net.URLClassLoader@5b414a8d].
log4j:ERROR Could not instantiate appender named "stdout".

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

前もって感謝します、
アヴナー

4

2 に答える 2

19

-Dlog4j.ignoreTCL=true を設定してみてください。log4jに関する同様の問題

于 2012-09-26T10:15:56.427 に答える
0

以下に示すように、maven tomcat プラグイン構成 にlog4j.ignoreTCLを追加します。

<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>
于 2016-10-07T13:51:58.303 に答える