Hello.

I'm not sure my question is actually related to Karaf, but I'm sure
Karaf users have some answers...

In a bundle (blueprint) that uses camel-jaxb to process XML files, the
manifest that is generated only sets imports for some jaxb package
detected in the code (javax.xml.bind.annotation). It seems to be
right.

Import-Package: info.xxxxxx.yyyyy.com.caterpillar.buddy;version="[0.0,
 1)",info.xxxxxx.yyyyy.com.facturation.facfou017.esb.enums,info.xxxxxx
 .yyyyy.com.facturation.facfou017.esb.ficWTRV001,info.xxxxxx.yyyyy.com
 .facturation.facturationentitefournisseur.facfou017.esb.dto,java.io,j
 ava.lang,java.lang.invoke,java.math,java.time.format,java.time.tempor
 al,java.util,javax.jms;version="[2.0,3)",javax.sql,javax.xml.bind.ann
 otation;version="[2.3,3)",org.apache.camel;version="[3.20,4)",org.apa
 che.camel.spi;version="[3.20,4)",org.apache.camel.spring.spi;version=
 "[3.20,4)",org.apache.commons.lang3.builder;version="[3.12,4)",org.os
 gi.service.blueprint;version="[1.0.0,2.0.0)",org.springframework.tran
 saction

The maven dependencies for the project are :

info.xxxxxx.yyyyy.com.facturation:facfou017-esb:bundle:2.2.0-SNAPSHOT
+- info.xxxxxx.yyyyy.com.caterpillar:caterpillar-testing:jar:0.0.1-SNAPSHOT:test
|  +- org.liquibase:liquibase-core:jar:3.9.0:test
|  |  \- javax.xml.bind:jaxb-api:jar:2.3.0:test
+- org.apache.camel:camel-core:jar:3.20.2:provided
|  +- org.apache.camel:camel-xml-jaxb:jar:3.20.2:provided
|  |  \- com.sun.xml.bind:jaxb-impl:jar:2.3.3:provided
+- org.apache.camel:camel-jaxb:jar:3.20.2:provided
|  \- com.sun.xml.bind:jaxb-core:jar:2.3.0:provided

So unit tests pass with no issue since the JAXP API is provided by the
liquibase that is used for testing.

But at runtime, the class javax.xml.bind.JAXBException that is caught
in a Camel route is not found. It seems to be logical, since the
package javax.xml.bind is not imported.

I added a dynamic import on this package, and now it works.

So, what is the best way to get all the needed imports ? Is the
dynamic import the only way to add missing packages ? How can we
detect early missing imports that maven-bundle-plugin doesn't take
into account ?

Thanks for your help.

Regards.

Reply via email to