使用一组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-Package
和Export-Package
答案 0 :(得分:1)
您可以将所有捆绑包安装到OSGi Framework中并在不启动任何捆绑的情况下解决它们。执行解决方案的调用是FrameworkWiring.resolveBundles(null)
。这将返回一个布尔值,指示是否可以解析包。
为了获得解决问题的更多细节,您可以尝试启动一个或多个未解析的包。由于您知道他们无法解决,因此他们实际启动没有危险,但您会得到BundleException
给出解决方案错误。
答案 1 :(得分:1)
您可以使用bndtools。它有一个解析器,可以检查捆绑包是否会解析,甚至在构建捆绑包列表时帮助您。
对于Apache karaf,有一个karaf功能文件的验证器,在构建时可以确保捆绑包可以传递关闭。