You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Jonathan Bayle (JIRA)" <ji...@apache.org> on 2017/01/17 16:48:26 UTC

[jira] [Commented] (LOG4J2-587) log4j-1.2-api emulation jar missing classes

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

Jonathan Bayle commented on LOG4J2-587:
---------------------------------------

Hello,

I see that this issue is closed, what is the solution/workaround for it?
I'd like to use log4j 2.6 in my project but I'm encountering this issue: I have log4j-1.2-api-2.6.2.jar in my classpath and AppenderSkeleton is still missing.
One dependency extends that class: https://github.com/JumpMind/symmetric-ds/search?q=AppenderSkeleton and if I keep log4j-1.2 in my classpath, loglines printed by that dependency are not correctly formatted.

Thanks for your help.

> 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-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org