我已阅读here以仔细使用“Import-Package”指令中的可选解决方案,但不明白为什么。另外,可选和不指定依赖之间的区别是什么?
答案 0 :(得分:8)
如果您根本未指定Import-Package,则捆绑包无法访问包,即使它可用并由其他捆绑包导出。
如果您可选择导入软件包,那么您的软件包可以使用它(如果可用),但该软件包不可用并不会阻止软件包的解析。
您应该避免在包级别使用可选的依赖项。要么你依赖一个包,要么你不依赖。通常需要可选的依赖关系表明你的bundle具有较差的一致性,即它在一个模块中做了太多不相关的事情。
答案 1 :(得分:0)
如果你说它是可选的,那么如果从其他捆绑包中导出它可能会发生。如果您根本不导入它,它将永远不可用于捆绑包。 那么,你需要什么呢? 如果您的捆绑包中确实有可选部件,则可以导入可选的依赖项。但是,您必须在使用它时检查它们是否存在。
如果无法找到可选的导入,OSGi不会抱怨,但如果你的bundle使用了根本没有导入的东西,JVM会抱怨。