OSGi - 检查一组捆绑包是否可以一起启动(运行前)

时间:2016-04-18 14:37:33

标签: java osgi

使用一组OSGi包有一种方法可以在运行时检查它们是否在OSGi容器中一起部署,这将是没有

org.osgi.framework.BundleException: The bundle "bundle_1.2.3 [n]" could not be resolved. Reason: Missing Constraint: Import-Package:

由于信息已经在MANIFEST.MF或其他构建工具中,因此 在编译时应该可以检查所有Import-PackageExport-Package

2 个答案:

答案 0 :(得分:1)

您可以将所有捆绑包安装到OSGi Framework中并在不启动任何捆绑的情况下解决它们。执行解决方案的调用是FrameworkWiring.resolveBundles(null)。这将返回一个布尔值,指示是否可以解析包。

为了获得解决问题的更多细节,您可以尝试启动一个或多个未解析的包。由于您知道他们无法解决,因此他们实际启动没有危险,但您会得到BundleException给出解决方案错误。

答案 1 :(得分:1)

您可以使用bndtools。它有一个解析器,可以检查捆绑包是否会解析,甚至在构建捆绑包列表时帮助您。

对于Apache karaf,有一个karaf功能文件的验证器,在构建时可以确保捆绑包可以传递关闭。