Do you use the POI SMX bundle or do you wrap POI as private of your
package ?
Regards
JB
On 08/12/2021 12:24, Richard Hierlmeier wrote:
As you can see from the stacktrace, the call to the DefaultLogBuilder is
made from Apache POI.
Does this mean that Apache Poi can not be used in Karaf?
Regards
Richard
Am Mi., 8. Dez. 2021 um 08:35 Uhr schrieb Jean-Baptiste Onofré
<[email protected] <mailto:[email protected]>>:
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