我有一个maven项目泛光灯。它与日食运行良好。然后,我使用bundle-plugin生成包,并将所有依赖项嵌入到单个目标包中,并使用<embed-dependenciy>
。这里是pom.xml:maven-bundle-plugin嵌入依赖项未能将包部署到OSGi容器中
<groupId>net.floodlightcontroller</groupId>
<artifactId>floodlight</artifactId>
<version>master</version>
<packaging>bundle</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
<Bundle-Activator>net.floodlightcontroller.core.Activator</Bundle-Activator>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
</instructions>
</configuration>
</plugin>
</plugins>
<build>
我检查了目标结构。所有的依赖包括在内。然后我检查MANIFEST.MF:
Import-Package:
COM.jrockit.reflect,COM.newmonics.PercClassLoader,com.google.protobuf,com.informix.jdbc,
com.kenai.jnr.x86asm,groovy.lang,javax.annotation,javax.jms,javax.mail,
javax.mail.internet,javax.management,javax.naming,javax.net,javax.net.ssl,javax.script,
*
*
*
我很奇怪,为什么它仍然进口这么多的包,因为我已经内嵌所有依赖到单束。当我部署束引入OSGi容器中,并启动它,我得到了错误:
Unable to start bundle 402: Unresolved constraint in bundle floodlight [402]:
Unable to resolve 402.0: missing requirement [402.0] osgi.wiring.package;
(osgi.wiring.package=COM.jrockit.reflect)
COM.jrockit.reflect处于进口封装列出的第一个包。但它没有在出口包装中列出。运行时需要这个软件包吗?谁能帮我?