this.getClass()。getResource(“xyz.class”)在OSGi环境中没有返回DIR PATH

时间:2011-11-02 15:01:16

标签: java osgi classloader

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

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

问题是如何开展这项工作。我需要DIR PATH到可以出现在另一个包中的依赖jar中的类吗?

1 个答案:

答案 0 :(得分:2)

你做不到。 OSGi抽象出束内容的位置。滥用类加载器API以假设所有资源URL都在文件系统上。过去已经完成的事实并不能成为它违反抽象的事实。

话虽这么说,Eclipse Equinox框架实现确实提供了一种特定于实现的方式。请参阅org.eclipse.core.runtime.FileLocator.toFileURL(URL)