Hello, Probably not the answer you want to read, but IMO, blueprint is not anymore the way to define/consume osgi services. The spec didn't have any changes in years, and it suffers issues like the one you mentioned and others. It was an attempt to specify Spring DM which is abonned too.
Declaratives Services is now way better in terms of functionality and DX - and it didn't hide you classes/packages to import. By the way, you shouldn't use Dynamic Import but normal Import-Package. Regards, Jérémie Le jeu. 9 févr. 2023 à 15:58, Ephemeris Lappis <[email protected]> a écrit : > 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. >
