Find the dependent bundles in Eclipse at runtime

[亡魂溺海] 提交于 2019-12-19 07:36:20

问题


How can an Eclipse bundle (eg. within activator code) find the dependent Bundle instances at runtime? I would like to find the bundles that Eclipse has choosen to satisfy the dependency requirements, I do not want to interprete the manifest myself.

An example: I would like to find all resources named "marker.txt" in all bundles on which my current bundle depends upon. Also the transitive dependencies. In order to accomplish this I need to be able to find all these bundles to begin with.


回答1:


There is no easy way to determine the dependency. The best way is to go through the PackageAdmin interface. See the OSGi spec for PackageAdmin and getImportingBundles in particular: http://www.osgi.org/javadoc/r4v42/org/osgi/service/packageadmin/ExportedPackage.html#getImportingBundles()

You need to determine for all installed bundles, which one exports one or more packages that your bundle is importing. The easiest way to achieve this is to call PackageAdmin.getExportedPackages(Bundle bundle) with bundles = null. This returns an array of all exported packages. You then need to iterate of this array and call ExportPackage.getImportingBundles().




回答2:


Please see my answer to this question. 4.3 will have a new bundle wiring API that will allow things like this.




回答3:


You can open an OSGi console and issue the following commands:

ss

To the the list of bundles, including the numeric id

bundle <id>

to get more information, including dependencies.

You should also try

help

to get more commands



来源:https://stackoverflow.com/questions/4153421/find-the-dependent-bundles-in-eclipse-at-runtime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!