【发布时间】:2018-09-29 00:38:45
【问题描述】:
提前致谢。我在启动 osgi 包时遇到问题,它会给出以下错误消息: 软件包/捆绑包将不会安装。它编译并构建正常,当部署到 Karaf 时,它不会加载并抱怨缺少看起来正在导出和导入的接线包。但缺少版本 ID。
执行命令时出错:无法在功能 passthru-mt1-application-1.0.1-SNAPSHOT 中启动捆绑 mvn:com.ge.digital.passthru/passthrumt1.dataserviceimpl/1.0.1-SNAPSHOT:未解决的约束捆绑 passthrumt1.dataserviceimpl [298]:无法解析 298.0:缺少要求 [298.0] osgi.wiring.package; (osgi.wiring.package=com.ge.digital.passthru.dataservice)
清单显示它正在导入包,并且正在导出,我唯一能找到的是导入包没有版本号。这可能是我的问题吗?任何想法如何解决?
Manifest-Version: 1.0
Bnd-LastModified: 1524070286656
Build-Jdk: 1.8.0_91
Built-By: 212555427
Bundle-ManifestVersion: 2
Bundle-Name: PassThru MT1 :: Data Service Impl
Bundle-SymbolicName: passthrumt1.dataserviceimpl
Bundle-Version: 1.0.1.SNAPSHOT
Created-By: Apache Maven Bundle Plugin
Export-Service: com.ge.digital.passthru.dataservice.PDXDataService
Import-Package: com.ge.digital.passthru.dataservice,com.ge.digital.passt
hru.entities;version="[1.0,2)",com.ge.digital.passtrhu.dataservice;vers
ion="[1.0,2)",org.apache.camel;version="[2.17,3)",org.apache.camel.buil
der;version="[2.17,3)",org.apache.camel.component.file;version="[2.17,3
)",org.apache.camel.model;version="[2.17,3)",org.osgi.service.blueprint
;version="[1.0.0,2.0.0)",org.slf4j;version="[1.7,2)"
Tool: Bnd-1.50.0
这是我的 POM
<!-- GE Internal Dependencies -->
<dependency>
<groupId>com.ge.digital.passthru</groupId>
<artifactId>passthrumt1.dataservice</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.ge.digital.passthru</groupId>
<artifactId>passthrumt1.entities</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Fuse Dependencies -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-blueprint</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ftp</artifactId>
</dependency>
<!-- logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<plugins>
<!-- to generate the MANIFEST-FILE of the bundle -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${bundle-plugin-version}</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Private-Package>com.ge.digital.passthru.dataservice.impl.*</Private-Package>
<Import-Package>
com.ge.digital.passtrhu.dataservice,
com.ge.digital.passthru.entities,
*
</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
【问题讨论】:
-
您导入包 com.ge.digital.passthru.dataservice。哪个包导出了这个包?
-
感谢 Christian,另一个包确实... Manifest-Version: 1.0 Bnd-LastModified: 1524171716592 Build-Jdk: 1.8.0_91 Built-By: 212555427 Bundle-ManifestVersion: 2 Bundle-Name: PassThru MT1 :: Data Service Bundle-SymbolicName:passthrumt1.dataservice Bundle-Version:1.0.1.SNAPSHOT 创建者:Apache Maven Bundle Plugin Export-Package:com.ge.digital.passthru.dataservice;uses:="com.ge.数字 l.passthru.entities";version="1.0.1.SNAPSHOT" 导入包:com.ge.digital.passthru.entities;version="[1.0,2)" 工具:Bnd-1.50.0
-
这个已经解决了,谢谢大家!原来我的一个包中有错字,maven 没有在下一次部署中刷新所有内容,我删除了 .m2/repo/mystuff 目录和 fuse 下的 ./data 并重新部署和 ba la bing ba la繁荣的魔法。
标签: osgi apache-karaf osgi-bundle