如何获取manifest.mf文件中定义的所有必需包,如java org.osgi.framework.Bundle
个对象?
我需要这些捆绑包用于BundleWiring
答案 0 :(得分:2)
您可以获得当前捆绑的BundleWiring:
wiring = bundle.adapt(BundleWiring.class)
然后,您可以从布线中获取有关包名称空间的详细信息。
wires = wiring.getRequiredWires(...)
您可以通过电线获得提供要求的BundleRevision。
答案 1 :(得分:1)
OSGi规范具有恰好适合这种情况的示例代码。
这是代码:
void printImports( Bundle A ) {
BundleWiring wA = A.adapt( BundleWiring.class );
for ( BundleWire wire :
wA.getRequiredWires(PACKAGE_NAMESPACE)) {
String pack = (String) wire.getCapability().getAttributes()
.get(PACKAGE_NAMESPACE);
Bundle bundle = wire.getProviderWiring()
.getBundle());
System.out.println(pack + " - " + bundle.getLocation());
}
}
取自https://osgi.org/specification/osgi.core/7.0.0/framework.wiring.html#i1748298