在使用maven构建时如何在osgi包中导入javax.smartcardio?

时间:2013-10-25 19:47:22

标签: java maven osgi

我正在尝试将模块添加到现有的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添加为依赖项?

2 个答案:

答案 0 :(得分:1)

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

我不熟悉智能卡API,所以我无法就如何找到导出它的捆绑提供建议。如果它作为普通JAR文件可用,那么您可能需要将其“包装”为OSGi包。

答案 1 :(得分: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