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