2012-09-13 12 views
9

Mam klasę java, która tworzy niestandardowy program ładujący klasy oparty na ładowaniu klasy javassist podczas uruchamiania, a następnie uruchamia klasę programu. Dostaję następujący błąd:Konfigurowanie org.apache.log4j.ConsoleAppender z niestandardowym programem ładującym klasy

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". 

Problem związany jest z faktem, że jeden obiekt jest tworzony przez pierwotnego classloader, podczas gdy drugi jest tworzony przez jeden zwyczaj.
Czy istnieje sposób na rozwiązanie tego błędu?

Dzięki z góry,
Avner

Odpowiedz

16

Spróbuj ustawić -Dlog4j.ignoreTCL = true, mam nadzieję, że to pomaga. simular problem about log4j

+1

Pracował jak czar ;-) Dzięki –

0

Dodaj log4j.ignoreTCL w maven tomcat plugin konfiguracji jak pokazano poniżej

<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> 
Powiązane problemy