打印OSGI捆绑类路径?

时间:2010-10-11 12:36:27

标签: eclipse classpath osgi

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

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

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

public void start(BundleContext context)抛出Exception {     super.start(上下文);     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 个答案:

答案 0 :(得分:2)

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

你能做的是:

  • 查看您的包的标题,看看它导入了哪些包,以及它们是必需的还是必需的

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

  • 的包的包

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

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