获取Java中所有必需的包

时间:2017-07-20 08:56:53

标签: java osgi bundle

如何获取manifest.mf文件中定义的所有必需包,如java org.osgi.framework.Bundle个对象?

我需要这些捆绑包用于BundleWiring

2 个答案:

答案 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