0

我可以毫无问题地构建我的项目“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>

任何想法可能导致此错误?

4

2 回答 2

0

我对OSGI不太了解,但有以下观察。

文档指定了如何<Bundle-SymbolicName>计算。在他们的真实世界示例中,他们似乎没有projectId.

<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
于 2011-02-02T11:09:02.327 回答
0

好的,我自己发现了问题。执行命令时出错:捆绑消息 [195] 中未解决的约束:模块;(&(bundle-symbolic-name=de.samba.common)(bundle-version>=0.0.1)) 完全出乎意料,它来自于在 src/main/resources/META-INF 中有一个 MANIFEST.MF 文件如果您正在进行插件/OSGi 开发,通常会描述捆绑信息。似乎 Maven BND 插件包含该文件,并且仅在不存在时才生成新信息。

因此,在删除 src/main/resources/META-INF/MANIFEST.MF 后问题得到解决,因此插件可以生成正确的插件。

于 2011-02-02T12:42:44.133 回答