I’m trying to to add a third-party jar to my URCap (Java Media Framework/JMF), but can’t figure out how to do that.
I add a new dependency to my pom.xml file:
Then I’ve used the “Embed-Dependency” tag, as suggested in these two topics:
After doing so, “mvn install” will work and shows the state “BUILD SUCCESS”. When I open the generated .urcap file I can
also see the jar inside the .urcap file.
But when I install the URCap, the URcap is marked with a yellow warning sign and shows the following error:
org.osgi.framework.BundleException: Unable to resolve com.test.urcap (R 334.0): missing requirement [com.test.urcap (R 334.0)] osgi.wiring.package; (osgi.wiring.package=com.ms.awt) Unresolved requirements: [[com.test.urcap (R 334.0)] osgi.wiring.package; (osgi.wiring.package=com.ms.awt)]
I’ve tried several things to fix this, e.g. the suggestions from these two forum topics:
I’ve also used Eclipse to generate a MANIFEST.MF file/OSGi bundle for the third-party jar. But the result is always
the same, “mvn install” runs just fine, but execution of the installed URCap does not work.
What am I missing? Is there a working example with third-party jars?
Thank you very much.
Anyone an idea or has an example?
Continued on trying different things out, but always the same error message…
I had a similar error at some point with another package, I am pretty sure that ‘osgi.wiring.package=com.ms.awt’ means you’re missing the dependency ‘com.ms.awt’, although i don’t know which package that dependency belongs to.
I resolved my error by finding my missing dependencies on https://mvnrepository.com/ and adding these as dependencies in my pom file, although it did require a large amount of dependencies (as some of the dependencies i added, had their own dependencies). There might be a better way of doing this, but I have not found it
Thank you very much for the replay and help.
I’ll try this out and make some research about “com.ms.awt”.
The answer of thomas gave me the correct hints:
The line "
osgi.wiring.package=com.ms.awt" inside the error message is important as it shows which elements have to be added to the
Import-Packages tag. When I add com.ms.awt it shows me the same error message again, but with a different package. I add the package, try again and so on until no more error messages appear.
Then I had to make some changes to the syntax (found out by google) and it works now.
So my complete pom looks like this:
<Import-Package> com.ur.urcap.api*;version="[1.3.0,2.0.0)", javax.media*;resolution:=optional, com.ms.awt*;resolution:=optional, com.ms.net.wininet*;resolution:=optional, com.ms.security*;resolution:=optional, com.sun.net.ssl.internal.ssl*;resolution:=optional, netscape.security*;resolution:=optional, sun.audio*;resolution:=optional, sun.awt.image*;resolution:=optional, * </Import-Package>
<Embed-Dependency> !javax.media, !org.osgi.core, !com.ur.urcap.api, *; scope=compile|runtime </Embed-Dependency>
I had to add only one dependency for jmf:
<dependency> <groupId>javax.media</groupId> <artifactId>jmf</artifactId> <version>2.1.1e</version> </dependency>