首页 文章

打印OSGI捆绑类路径?

提问于
浏览
6

在普通的Java应用程序中,可以使用以下命令打印类路径的内容:

String ss = System.getProperty("java.class.path");
System.out.println(ss);

但是如何打印使用eclipse PDE向导创建的OSGI包的类路径?在激活器中,可以获得当前的捆绑包:

public void start(BundleContext context)throws Exception {super.start(context); plugin = this;

Bundle b  = context.getBundle();
 // java doc: This bundle's class loader is not used to search for entries. 
b.findEntries(path, filePattern, recurse)

但是javadoc说findEntries不使用类加载器 . 有没有简单的方法来查看/打印当前包的类路径上的内容?

1 回答

  • 2

    正如其他人所说,实际上没有“捆绑类路径”这样的东西 - 这就是OSGi的重点 . :)

    你能做的是:

    • 查看您的包的 Headers ,以查看它导入的包,以及它们是必需的还是必需的

    • 使用PackageAdmin查找导出具有给定名称的包的包

    但是,不推荐使用AFAIK PackageAdmin,并且将有一个新的/扩展机制来处理4.3中的捆绑连接 .

    看起来你真正的动机是类路径扫描来查找和加载资源 . 这不容易实现的事实是强制执行模块边界的副作用:你不能有栅栏,同时允许任何人走在草坪上 . 有一个标准服务的计划,代表客户扫描捆绑,但似乎已被撤销(不知道为什么 - 可能是新的4.3内容的结果) .

相关问题