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