Hi Richard,

Yes and no ;)

Pax Logging "wrap" log4j classes, mostly the API, but not all classes, especially the one that could not work in OSGi or don't make sense with Pax Logging.

Especially, in pax-logging-api, all org.apache.logging.log4j.internal classes (including DefaultLogBuilder) are not shipped as you are not supposed to use it (it's delegated to Pax Logging service).

Regards
JB

On 08/12/2021 08:28, Richard Hierlmeier wrote:
I have in a Karaf 4.3.3 application an Excel export based on Apache Poi 5.1.0.
During the export the following exception occurs:

Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/internal/DefaultLogBuilder at org.apache.logging.log4j.spi.AbstractLogger$LocalLogBuilder.initialValue(AbstractLogger.java:2953) at org.apache.logging.log4j.spi.AbstractLogger$LocalLogBuilder.initialValue(AbstractLogger.java:2945)
at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:180)
at java.lang.ThreadLocal.get(ThreadLocal.java:170)
at org.apache.logging.log4j.spi.AbstractLogger.getLogBuilder(AbstractLogger.java:2930) at org.apache.logging.log4j.spi.AbstractLogger.atLevel(AbstractLogger.java:2923) at org.apache.logging.log4j.spi.AbstractLogger.atWarn(AbstractLogger.java:2882)
at org.apache.poi.util.XMLHelper.logThrowable(XMLHelper.java:307)
at org.apache.poi.util.XMLHelper.trySet(XMLHelper.java:287)
at org.apache.poi.util.XMLHelper.getDocumentBuilderFactory(XMLHelper.java:114)
at org.apache.poi.util.XMLHelper.<clinit>(XMLHelper.java:85)
at org.apache.poi.ooxml.util.DocumentHelper.newDocumentBuilder(DocumentHelper.java:47)
at org.apache.poi.ooxml.util.DocumentHelper.<clinit>(DocumentHelper.java:36)
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.save(ContentTypeManager.java:429)
at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:554)
at org.apache.poi.openxml4j.opc.OPCPackage.save(OPCPackage.java:1487)
at org.apache.poi.ooxml.POIXMLDocument.write(POIXMLDocument.java:227)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:963)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.internal.DefaultLogBuilder not found by org.ops4j.pax.logging.pax-logging-api [7] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1565) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:78) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1950)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 32 more

The org.ops4j.pax.logging.pax-logging-api bundle has no import to org.apache.logging.log4j.internal.

karaf@root()> headers 7
...
Import-Package =
         org.osgi.framework;version="[1.0.0,2.0.0)",
         org.osgi.framework.wiring;version="[1.0.0,2.0.0)",
         org.osgi.util.tracker;version="[1.0.0,2.0.0)",
org.osgi.service.event;resolution:=optional;version="[1.0.0,2.0.0)",
         org.osgi.service.log;version="[1.4.0,2.0.0)",
         org.apache.log;resolution:=optional,
         javax.xml.parsers,
         org.w3c.dom,
org.osgi.service.log.admin;resolution:=optional;version="[1.0,2.0)", org.osgi.service.log.stream;resolution:=optional;version="[1.0,2.0)"

Is this a known bug?

Regards

   Richard

Reply via email to