在普通的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 回答
正如其他人所说,实际上没有“捆绑类路径”这样的东西 - 这就是OSGi的重点 . :)
你能做的是:
查看您的包的 Headers ,以查看它导入的包,以及它们是必需的还是必需的
使用PackageAdmin查找导出具有给定名称的包的包
但是,不推荐使用AFAIK PackageAdmin,并且将有一个新的/扩展机制来处理4.3中的捆绑连接 .
看起来你真正的动机是类路径扫描来查找和加载资源 . 这不容易实现的事实是强制执行模块边界的副作用:你不能有栅栏,同时允许任何人走在草坪上 . 有一个标准服务的计划,代表客户扫描捆绑,但似乎已被撤销(不知道为什么 - 可能是新的4.3内容的结果) .