[ 
https://issues.apache.org/jira/browse/LOG4J2-587?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15829796#comment-15829796
 ] 

Remko Popma commented on LOG4J2-587:
------------------------------------

>From the stack trace it seems that in
{code}
org.jumpmind.symmetric.util.LogSummaryAppenderUtils.registerLogSummaryAppender(LogSummaryAppenderUtils.java:40)
 
{code}
the symmetric product is trying to instantiate a class that inherits from 
AppenderSkeleton. Since that class is not in the classpath, and the product 
cannot handle situations when AppenderSkeleton is not in the classpath, you are 
seeing the above problem. 

Log4j2 and the Log4j 1.2 bridge may not be able to help. Symmetric should 
update their product to remove the hard coded dependency on the Log4j 1.2 
AppenderSkeleton class. I suggest you contact them also with this problem 
description. 

You can try working around the problem by providing a custom 
org.apache.log4j.AppenderSkeleton class with all methods stubbed out in your 
application. If that solves the problem it may be useful to others so we should 
consider  including it into the Log4j 1.2 bridge. 

> log4j-1.2-api emulation jar missing classes
> -------------------------------------------
>
>                 Key: LOG4J2-587
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-587
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: log4j 1.2 emulation
>    Affects Versions: 2.0-rc1
>            Reporter: Adam Gent
>              Labels: easyfix
>
> The log4j 1.2 emulation jar does not contain {{AppenderSkeleton}}. There are 
> several Spring components like spring-amqp that define custom appenders. 
> Even if you don't reference those appenders because of various class loading 
> discovery (such as Springs annotation configuration) you will get exceptions 
> like
> {code}
> java.lang.NoClassDefFoundError: org/apache/log4j/AppenderSkeleton
>       at java.lang.Class.getDeclaredMethods0(Native Method)
>       at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
>       at java.lang.Class.getDeclaredMethods(Class.java:1855)
>       at 
> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(
> {code}
> And thus you cannot remove the original log4j-1.2.x jars.
> Basically the class just needs to exist to avoid reflection exceptions like 
> the one above. Unfortunately this is a show stopper for us as we use Spring 
> heavily and and it appears to happen on any of our spring applications and we 
> don't allow jars with duplicate classes in our projets.
> This appears to be an easy fix... just stub all of the log4j-1.2 classes that 
> are extendable.
> The log4j SLF4J bridge does in fact contain the appender skeleton: 
> http://www.slf4j.org/api/org/apache/log4j/package-summary.html
> Consequently a not so ideal workaround is to just use 
> {{log4j-over-slf4j.jar}} which does contain the AppenderSkeleton.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to