[PAX EXAM] file name too long?

6 views
Skip to first unread message

Niclas Hedhman

unread,
Aug 14, 2019, 10:57:00 PM8/14/19
to OPS4J

Gang,
I got the exception below, when using wrappedBundle() to add handling for Javax JSON API service loader, without rewriting the original bundle manifest.

Does anyone understand what is happening and what can be done about it?

Code is
wrappedBundle( mavenBundle( "javax.json", "javax.json-api", "1.1" ).getURL() )
.overwriteManifest( WrappedUrlProvisionOption.OverwriteMode.MERGE )
.instructions( "Require-Capability: osgi.extender;\\\n"
+ " filter:=\"(osgi.extender=osgi.serviceloader.processor)\",\\\n"
+ " osgi.serviceloader;\\\n"
+ " filter:=\"(osgi.serviceloader=javax.json.spi.JsonProvider)\";\\\n"
+ " cardinality:=multiple" ),
mavenBundle( "org.apache.johnzon", "johnzon-core", "1.1.1" ),


Exception in thread "main" org.ops4j.pax.exam.TestContainerException: Problem starting test container.
at org.ops4j.pax.exam.nat.internal.NativeTestContainer.start(NativeTestContainer.java:212)
at com.spicter.niclas1.test.integration.PaxExamStarter.main(PaxExamStarter.java:26)
Caused by: org.osgi.framework.BundleException: Unable to cache bundle: wrap:mvn:javax.json/javax.json-api/1.1$overwrite=MERGE&Require-Capability: osgi.extender;\
    filter:="(osgi.extender=osgi.serviceloader.processor)",\
  osgi.serviceloader;\
    filter:="(osgi.serviceloader=javax.json.spi.JsonProvider)";\
    cardinality:=multiple
at org.apache.felix.framework.Felix.installBundle(Felix.java:3013)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:167)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:140)
at org.ops4j.pax.exam.nat.internal.NativeTestContainer.installAndStartBundles(NativeTestContainer.java:340)
at org.ops4j.pax.exam.nat.internal.NativeTestContainer.start(NativeTestContainer.java:209)
... 1 more
Caused by: java.io.IOException: Error resolving artifact javax.json:javax.json-api:jar:1.1$overwrite=MERGE&Require-Capability: osgi.extender;\
    filter:="(osgi.extender=osgi.serviceloader.processor)",\
  osgi.serviceloader;\
    filter:="(osgi.serviceloader=javax.json.spi.JsonProvider)";\
    cardinality:=multiple: Could not transfer artifact javax.json:javax.json-api:jar:1.1$overwrite=MERGE&Require-Capability: osgi.extender;\
    filter:="(osgi.extender=osgi.serviceloader.processor)",\
  osgi.serviceloader;\
    filter:="(osgi.serviceloader=javax.json.spi.JsonProvider)";\
    cardinality:=multiple from/to central (http://repo1.maven.org/maven2/): /home/niclas/.m2/repository/javax/json/javax.json-api/1.1$overwrite=MERGE&Require-Capability: osgi.extender;\
    filter:="(osgi.extender=osgi.serviceloader.processor)",\
  osgi.serviceloader;\
    filter:="(osgi.serviceloader=javax.json.spi.JsonProvider)";\
    cardinality:=multiple/javax.json-api-1.1$overwrite=MERGE&Require-Capability: osgi.extender;\
    filter:="(osgi.extender=osgi.serviceloader.processor)",\
  osgi.serviceloader;\
    filter:="(osgi.serviceloader=javax.json.spi.JsonProvider)";\
    cardinality:=multiple.jar.part.lock (File name too long)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:626)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:570)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:548)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:523)
at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123)
at org.ops4j.net.URLUtils.prepareInputStream(URLUtils.java:180)
at org.ops4j.pax.url.wrap.internal.Connection.getInputStream(Connection.java:83)
at org.apache.felix.framework.util.SecureAction.getURLConnectionInputStream(SecureAction.java:525)
at org.apache.felix.framework.cache.JarRevision.initialize(JarRevision.java:166)


--
Niclas Hedhman, Software Developer
http://polygene.apache.org - New Energy for Java

Niclas Hedhman

unread,
Aug 14, 2019, 11:18:28 PM8/14/19
to OPS4J
Never mind, I found part of the answer inside ~/.m2/repository and realize that the BND instructions are placed as file names somehow, and not into a bnd file, so line breaks doesn't work.

Making it into a single line, the exception changes to

Caused by: java.net.MalformedURLException: Invalid syntax for instruction [Require-Capability: osgi.extender;filter:="(osgi.extender=osgi.serviceloader.processor)",osgi.serviceloader;filter:="(osgi.serviceloader=javax.json.spi.JsonProvider)";cardinality:=multiple]


even though I have copied that verbatim from https://blog.osgi.org/2013/02/javautilserviceloader-in-osgi.html


Any thoughts?

Reply all
Reply to author
Forward
0 new messages