this.getClass().getResource( "xyz.class" ) 在 OSGi 环境中不返回 DIR PATH



我的应用程序依赖于一些SDK jar。本SDK在其api中广泛使用了this.getClass().getResource("xyz.class")方法。

现在,我基于这些jar开发了bundle,并在OSGi环境中运行它们。但是,在OSGi环境中,this.getClass().getResource("xyz.class")代码行返回一些bundle路径到xyz.class,而它应该返回jar://的绝对DIR路径(就像它在非OSGi环境中所做的那样)。

问题是如何得到这项工作。我需要的DIR路径类,可以存在于一个依赖的jar存在于另一个bundle?

你不能。OSGi抽象了包内容的位置。假设所有资源url都在文件系统上是对类装入器API的滥用。过去有过这样做的事实不能作为违反抽象的事实的借口。

也就是说,Eclipse Equinox框架实现确实提供了一种特定于实现的方式。看到org.eclipse.core.runtime.FileLocator.toFileURL (URL) .

最新更新