gpt4 book ai didi

java - 无法启动 osgi 包,因为无法解析导入

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:41 26 4
gpt4 key购买 nike

我制作了一个小型 API 包和一个应该使用该 API 的服务包。

在我的 maven pom.xml 文件中,我在正确的版本中为我的 api 包添加了一个依赖项,如下所示:

<dependency>
<groupId>at.foobar.osgi.api</groupId>
<artifactId>foobarapi</artifactId>
<version>1.0</version>
</dependency>

我使用 maven-bundle 插件来创建包,因此我使用 mvn clean install 通过 jar 文件创建。 list 看起来像这样(服务):

Manifest-Version: 1.0
Private-Package: at.foobar.osgi.producer
Built-By: foobar
Tool: Bnd-0.0.238
Bundle-Name: foobarproducer
Created-By: Apache Maven Bundle Plugin
Bundle-Version: 1.0
Build-Jdk: 1.6.0_26
Bnd-LastModified: 1332185439257
Bundle-ManifestVersion: 2
Bundle-Activator: at.foobar.osgi.producer.Activator
Import-Package: at.foobar.osgi.api,org.osgi.framework;version="1.4"
Bundle-SymbolicName: at.foobar.osgi.producer.foobarproducer

这对我来说似乎没问题。导入在那里,所以一切都应该没问题。

现在我启动了 Equinox 并安装了 API 和生产者包。然后我启动了 API,结果很好。但是当我想启动 Producer Service 时,我得到了这个错误:

org.osgi.framework.BundleException: The bundle "at.foobar.osgi.producer.foobarproducer_1.0.0 [4]" could not be resolved. Reason: Missing Constraint: Import-Package: at.foobar.osgi.api; version="0.0.0"

框架好像找不到api,但是已经安装启动了?

最佳答案

确保您正在导出 API 包,以便您的服务包可以绑定(bind)到它们。

在 API 包的 maven-bundle-plugin 中,您应该有类似的东西:

            <configuration>
<instructions>
<Import-Package>
*
</Import-Package>
<Export-Package>
at.foobar.osgi.api.*
</Export-Package>
</instructions>
</configuration>

关于java - 无法启动 osgi 包,因为无法解析导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com