我可以毫无问题地构建我的项目“samba.interfaces”和“samba.message”。但是当我尝试在ServiceMix中启动“samba.message”包时(需要包含de.samba.common包的“samba.interfaces”包),我收到以下错误:
Error executing command: Unresolved constraint in bundle message [195]: module;
(&(bundle-symbolic-name=de.samba.common)(bundle-version>=0.0.1))
那么,用于的符号名称是什么?它必须与主包相同吗?这是POM的一部分,用于指定消息包:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.2.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Activator>de.samba.message.Activator</Bundle-Activator>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>SAMBA Message</Bundle-Name>
<Bundle-Version>1.0.0</Bundle-Version>
<Import-Package>
javax.jws,
javax.wsdl,
javax.xml.bind,
javax.xml.bind.annotation,
javax.xml.namespace,
javax.xml.ws,
META-INF.cxf,
META-INF.cxf.osgi,
org.apache.cxf.endpoint,
org.apache.cxf.bus,
org.apache.cxf.bus.spring,
org.apache.cxf.bus.resource,
org.apache.cxf.configuration.spring,
org.apache.cxf.resource,
org.apache.cxf.service.model,
org.apache.cxf.jaxws,
org.apache.cxf.transport.http_osgi,
org.springframework.beans.factory.config,
org.springframework.beans.factory.xml,
org.springframework.core.io,
org.springframework.beans.factory,
org.springframework.context.support,
org.springframework.beans,
org.springframework.context,
org.osgi.framework,
org.apache.log4j,
de.samba.common.auditingcontrol.*,
de.samba.common.collect.*,
de.samba.common.message.*,
de.samba.common.repository.*,
de.samba.common.security.*,
de.samba.common,
*
</Import-Package>
<Export-Package>de.samba.message.*</Export-Package>
<Private-Package>
</Private-Package>
<!--
<DynamicImport-Package>*</DynamicImport-Package>
-->
</instructions>
任何可能导致此错误的想法?
答案 0 :(得分:0)
我对OSGI不太了解,但有以下观察。
documentation指定如何计算<Bundle-SymbolicName>
。在他们的真实世界示例中,他们似乎没有projectId
。
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
答案 1 :(得分:0)
好的,我自己发现了这个问题。执行命令时出错:捆绑消息[195]中的未解决约束:模块; (&amp;(bundle-symbolic-name = de.samba.common)(bundle-version&gt; = 0.0.1))完全出乎意料,它来自src / main / resources / META-中的MANIFEST.MF文件如果您正在进行插件/ OSGi开发,通常会描述包信息的INF。似乎Maven BND插件包含该文件,并且仅在不存在时才生成新信息。
所以在删除src / main / resources / META-INF / MANIFEST.MF之后问题就解决了,所以插件可以生成正确的插件。