我的应用程序依赖于某些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中的类吗?
答案 0 :(得分:2)
你做不到。 OSGi抽象出束内容的位置。滥用类加载器API以假设所有资源URL都在文件系统上。过去已经完成的事实并不能成为它违反抽象的事实。
话虽这么说,Eclipse Equinox框架实现确实提供了一种特定于实现的方式。请参阅org.eclipse.core.runtime.FileLocator.toFileURL(URL)。