u12*_*123 6 eclipse osgi classpath
在普通的Java应用程序中,可以使用以下命令打印类路径的内容:
String ss = System.getProperty("java.class.path");
System.out.println(ss);
Run Code Online (Sandbox Code Playgroud)
但是如何打印使用eclipse PDE向导创建的OSGI包的类路径?在激活器中,可以获得当前的捆绑包:
public void start(BundleContext context)抛出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)
Run Code Online (Sandbox Code Playgroud)
但是javadoc说findEntries不使用类加载器.有没有简单的方法来查看/打印当前包的类路径上的内容?
正如其他人指出的那样,实际上不存在“捆绑类路径”这样的东西——这就是 OSGi 的全部意义。:)
你能做的是:
查看捆绑包的标头,了解它导入了哪些包,以及它们是必需的还是强制的
使用 PackageAdmin 查找导出具有给定名称的包的包
然而,据我所知 PackageAdmin 已被弃用,并且在 4.3 中将有一个新的/扩展的机制来处理捆绑连接。
看来您这样做的真正动机是类路径扫描以查找和加载资源。事实上,这并不容易实现,这是强制模块边界的副作用:你不能在有围栏的同时允许任何人在草坪上行走。有一个代表客户扫描捆绑包的标准服务计划,但该计划似乎已被撤回(不确定原因 - 可能是新的 4.3 内容的结果)。
| 归档时间: |
|
| 查看次数: |
3286 次 |
| 最近记录: |