Import-Package解析之间的区别:=可选,完全没有依赖

时间:2013-12-03 13:23:04

标签: osgi

我已阅读here以仔细使用“Import-Package”指令中的可选解决方案,但不明白为什么。另外,可选和不指定依赖之间的区别是什么?

2 个答案:

答案 0 :(得分:8)

如果您根本未指定Import-Package,则捆绑包无法访问包,即使它可用并由其他捆绑包导出。

如果您可选择导入软件包,那么您的软件包可以使用它(如果可用),但该软件包不可用并不会阻止软件包的解析。

您应该避免在包级别使用可选的依赖项。要么你依赖一个包,要么你不依赖。通常需要可选的依赖关系表明你的bundle具有较差的一致性,即它在一个模块中做了太多不相关的事情。

答案 1 :(得分:0)

如果你说它是可选的,那么如果从其他捆绑包中导出它可能会发生。如果您根本不导入它,它将永远不可用于捆绑包。 那么,你需要什么呢? 如果您的捆绑包中确实有可选部件,则可以导入可选的依赖项。但是,您必须在使用它时检查它们是否存在。

如果无法找到可选的导入,OSGi不会抱怨,但如果你的bundle使用了根本没有导入的东西,JVM会抱怨。