Hi, That’s an issue in the bundle (JAXB is affected AFAIR) itself (already reported). I have to implement a workaround to avoid this with JDK 9+.
About condition, they are evaluated at runtime by the resolver. Thanks to that, if later you install a condition feature, then the inner resources will be installed. Regards JB > Le 27 févr. 2020 à 16:34, Alex Soto <alex.s...@envieta.com> a écrit : > > Thank you JB, > > I have made the changes you suggested, but the behavior is very strange; the > first time I run, I get this error: > > java.lang.ArrayIndexOutOfBoundsException: 19 > at aQute.bnd.osgi.Clazz.parseClassFile(Clazz.java:576) > at aQute.bnd.osgi.Clazz.parseClassFile(Clazz.java:494) > at aQute.bnd.osgi.Clazz.parseClassFileWithCollector(Clazz.java:483) > at aQute.bnd.osgi.Clazz.parseClassFile(Clazz.java:473) > at aQute.bnd.osgi.Analyzer.analyzeJar(Analyzer.java:2177) > at aQute.bnd.osgi.Analyzer.analyzeBundleClasspath(Analyzer.java:2083) > at aQute.bnd.osgi.Analyzer.analyze(Analyzer.java:138) > at aQute.bnd.osgi.Analyzer.calcManifest(Analyzer.java:616) > at org.ops4j.pax.swissbox.bnd.BndUtils.createBundle(BndUtils.java:161) > at > org.ops4j.pax.url.wrap.internal.Connection.getInputStream(Connection.java:83) > at java.net.URL.openStream(URL.java:1045) > at > org.apache.karaf.features.internal.download.impl.SimpleDownloadTask.download(SimpleDownloadTask.java:78) > at > org.apache.karaf.features.internal.download.impl.AbstractRetryableDownloadTask.run(AbstractRetryableDownloadTask.java:60) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > java.lang.ArrayIndexOutOfBoundsException: 19 > at aQute.bnd.osgi.Clazz.parseClassFile(Clazz.java:576) > at aQute.bnd.osgi.Clazz.parseClassFile(Clazz.java:494) > at aQute.bnd.osgi.Clazz.parseClassFileWithCollector(Clazz.java:483) > at aQute.bnd.osgi.Clazz.parseClassFile(Clazz.java:473) > at aQute.bnd.osgi.Analyzer.analyzeJar(Analyzer.java:2177) > at aQute.bnd.osgi.Analyzer.analyzeBundleClasspath(Analyzer.java:2083) > at aQute.bnd.osgi.Analyzer.analyze(Analyzer.java:138) > at aQute.bnd.osgi.Analyzer.calcManifest(Analyzer.java:616) > at org.ops4j.pax.swissbox.bnd.BndUtils.createBundle(BndUtils.java:161) > at > org.ops4j.pax.url.wrap.internal.Connection.getInputStream(Connection.java:83) > at java.net.URL.openStream(URL.java:1045) > at > org.apache.karaf.features.internal.download.impl.SimpleDownloadTask.download(SimpleDownloadTask.java:78) > at > org.apache.karaf.features.internal.download.impl.AbstractRetryableDownloadTask.run(AbstractRetryableDownloadTask.java:60) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > > Followed by multiple errors of the kind: > > Uses constraint violation. Unable to resolve resource XXXX. because it is > exposed to package 'javax.xml.bind' from resources jakarta.xml.bind-api > [jakarta.xml.bind-api [52](R 52.0)] and org.apache.felix.framework > [org.apache.felix.framework [0](R 0)] via two dependency chains. > > > However, after I exit Karaf and run it again, the errors disappear, and the > bundles in the conditional are not deployed as expected. > All of the above happens when building the code with Java 13 (although > passing —release 1.8 to the compiler). > > I wonder, is the condition evaluated at build time or at runtime? > > Now, when I compile with Java 8, I still get the Index out of bound errors > from BND the first time it runs, but not the uses constraints violation > errors. > > > Best regards, > Alex soto > > > > >> On Feb 27, 2020, at 9:46 AM, Jean-Baptiste Onofre <j...@nanthrax.net >> <mailto:j...@nanthrax.net>> wrote: >> >> Hi Alex, >> >> Can you try this condition: >> >> <condition>req:osgi.ee;filter:="(&(osgi.ee=JavaSE)(!(version>=1.8)))"</condition> >> >> And also remove the dependency flag. >> >> Regards >> JB >> >>> Le 27 févr. 2020 à 15:42, Alex Soto <alex.s...@envieta.com >>> <mailto:alex.s...@envieta.com>> a écrit : >>> >>> Perhaps I am still doing something wrong, or not understanding how the >>> condition works. >>> I have this in my features.xml: >>> >>> >>> <conditional> >>> <!-- From Java 9 and up add JaveEE dependencies --> >>> >>> <condition>req:osgi.ee;filter:="(&(osgi.ee=JavaSE)(version>=9))"</condition> >>> >>> <bundle >>> dependency="true">mvn:jakarta.xml.bind/jakarta.xml.bind-api/${jaxb.version}</bundle> >>> <bundle >>> dependency="true">mvn:com.sun.activation/javax.activation/1.2.0</bundle> >>> <bundle >>> dependency="true">wrap:mvn:org.glassfish.jaxb/txw2/${jaxb.version}</bundle> >>> <bundle >>> dependency="true">mvn:com.sun.istack/istack-commons-runtime/3.0.8</bundle> >>> <bundle >>> dependency="true">mvn:org.jvnet.staxex/stax-ex/1.8.1</bundle> >>> <bundle >>> dependency="true">mvn:com.sun.xml.fastinfoset/FastInfoset/1.2.16</bundle> >>> <bundle >>> dependency="true">wrap:mvn:org.glassfish.jaxb/jaxb-runtime/${jaxb.version}</bundle> >>> </conditional> >>> >>> >>> But when I run on Java 8, the above bundles are deployed, but my intention >>> is the opposite. >>> Of course this causes a lot of errors. Please help. >>> >>> Best regards, >>> Alex soto >>> >>> >>> >>> >>>> On Feb 26, 2020, at 4:21 PM, Jean-Baptiste Onofré <j...@nanthrax.net >>>> <mailto:j...@nanthrax.net>> wrote: >>>> >>>> Thanks Guillaume, it?s what I was looking for. >>>> >>>> Regards >>>> JB >>>> >>>> Le mer. 26 f?vr. 2020 ? 21:31, Guillaume Nodet <gno...@apache.org >>>> <mailto:gno...@apache.org>> a ?crit : >>>> This should be doable using something like in the test >>>> https://github.com/apache/karaf/blob/master/features/core/src/test/resources/org/apache/karaf/features/internal/service/f06.xml#L30-L33 >>>> >>>> <https://github.com/apache/karaf/blob/master/features/core/src/test/resources/org/apache/karaf/features/internal/service/f06.xml#L30-L33> >>>> Le mer. 26 f?vr. 2020 ? 19:53, Alex Soto <alex.s...@envieta.com >>>> <mailto:alex.s...@envieta.com>> a ?crit : >>>> In Features XML, is it possible to add a bundle conditionally based on JDK >>>> version? >>>> >>>> <conditional> >>>> <condition>???</condition> >>>> </conditonal> >>>> >>>> BTW, I could not find documentation about what can be put in the condition >>>> tag. >>>> I looked here https://karaf.apache.org/manual/latest/provisioning >>>> <https://karaf.apache.org/manual/latest/provisioning> but there is no >>>> mention of this. >>>> >>>> Best regards, >>>> Alex soto >>>> >>>> >>>> >>>> >>>> >>>> >>>> -- >>>> ------------------------ >>>> Guillaume Nodet >>>> >>> >> >