在普通的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的重点。 :)
您可以做的是:
但是,不建议使用AFAIK PackageAdmin,并且将使用新的/扩展的机制来处理4.3中的束线连接。
看来您这样做的真正动机是通过类路径扫描来查找和加载资源。不可能做到这一点的事实是强制执行模块边界的副作用:您不能有围栏,同时要允许任何人在草坪上行走。
曾经有一个计划用于代表客户扫描捆绑软件的标准服务,但该计划似乎已被撤消(不确定原因-可能是由于新的4.3版本造成的)。
关于eclipse - 打印OSGI包的类路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3906222/