1

我正在尝试向现有的 osgi 框架 (www.ogema.org) 添加一个模块。我必须使用依赖于 javax.smartcardio 的库。我将库添加到本地存储库,这似乎有效。但是当我想启动使用该库的包时,我得到了错误:

The bundle "org.ogema.examples.securitymodule-app_1.1.1 [12]" could not be resolved. Reason: Missing Constraint: Import-Package: javax.smartcardio; version="0.0.0"

如何将 javax.smartcardio 添加为依赖项?

4

2 回答 2

1

它已经被添加为依赖项,所以没关系。问题是您在 OSGi 框架中没有导出包的javax.smartcardio包。对于包中的每个导入包,必须从另一个包中导出该包的相应导出。

我不熟悉智能卡 API,因此无法提供有关如何找到导出它的捆绑包的建议。如果它以纯 JAR 文件的形式提供,那么您可能需要将其“包装”为 OSGi 包。

于 2013-10-26T06:58:48.503 回答
1

javax.smartcardio 是 JRE 的一部分(至少在 6 中,不确定是否已经在 5 中,规范 JSR 268 是从 2006 年开始的,所以它可能在 J5 中)。

你的框架很可能没有导出这个包。org.osgi.framework.system.packages.extra您可以通过将框架属性设置为javax.smartcardio;version=1.0.0;jsr=268(JSR 或版本是可选的,但它是很好的文档)从框架中导出此包。

在 bndtools 你可以这样做:

  -runsystempackages: \
    javax.smartcardio;version=1.0.0;jsr=268
于 2013-10-27T09:22:44.887 回答