Skip to content

ClassNotFoundException when using custom appenders in OSGi projects #72

@simonzn

Description

@simonzn

Due to classpath separation in OSGi based projects, loading of custom Appenders fails with e.g.

log4j:ERROR Could not create an Appender. Reported error follows.
java.lang.ClassNotFoundException: ch.sbb.rcs.common.logging.LazyRollingFileAppender cannot be found by org.apache.log4j_1.2.25
	at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:541)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:536)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:375)
	at org.apache.log4j.helpers.Loader.loadClass(Loader.java:159)
	at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:240)
	at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:174)
	at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:189)
	at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:492)
	at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:415)
	at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:932)
	at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:808)
	at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:721)
	at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:839)
       [...]

The manifest should define a buddy policy to enable buddy class loading, as described in Context Class Loader Enhancements.

I'd suggest to add Eclipse-BuddyPolicy: registered. Then, the issue above is fixed by adding Eclipse-RegisterBuddy: org.apache.log4j to the bundle that provides the custom appender.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions