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

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

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

公共(public)无效开始(BundleContext上下文)引发异常{
super.start(上下文);
插件=这个;
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不使用类加载器。有没有简单的方法可以查看/打印当前包的类路径中的内容?

最佳答案

正如其他人指出的那样,实际上并没有所谓的“捆绑类路径”(bundle classpath),这就是OSGi的重点。 :)

您可以做的是:

  • 查看您包的 header ,以了解它导入了哪些软件包,以及它们是必需的还是必需的
  • 使用PackageAdmin查找以给定名称
  • 导出软件包的捆绑软件

    但是,不建议使用AFAIK PackageAdmin,并且将使用新的/扩展的机制来处理4.3中的束线连接。

    看来您这样做的真正动机是通过类路径扫描来查找和加载资源。不可能做到这一点的事实是强制执行模块边界的副作用:您不能有围栏,同时要允许任何人在草坪上行走。
    曾经有一个计划用于代表客户扫描捆绑软件的标准服务,但该计划似乎已被撤消(不确定原因-可能是由于新的4.3版本造成的)。

    关于eclipse - 打印OSGI包的类路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3906222/

    10-12 00:24