在普通的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不使用类加载器。有没有简单的方法来查看/打印当前包的类路径上的内容?
答案 0 :(得分:2)
正如其他人所说,实际上没有“捆绑类路径”这样的东西 - 这就是OSGi的重点。 :)
你能做的是:
查看您的包的标题,看看它导入了哪些包,以及它们是必需的还是必需的
使用PackageAdmin查找导出具有给定名称
但是不推荐使用AFAIK PackageAdmin,并且在4.3中将有一个新的/扩展机制来处理捆绑接线。
这似乎是你真正的动机是类路径扫描找到&加载资源。这是不容易实现的事实是强制执行模块边界的副作用:你不能有栅栏,同时允许任何人走在草坪上。 有一个标准服务计划代表客户端扫描捆绑包,但这似乎已被撤销(不确定原因 - 可能是新4.3内容的结果)。