【问题标题】:this.getClass().getResource("xyz.class") not returning DIR PATH in OSGi environmentthis.getClass().getResource("xyz.class") 在 OSGi 环境中不返回 DIR PATH
【发布时间】:2011-12-20 09:58:57
【问题描述】:

我的应用依赖于一些 SDK jar。该 SDK 在其 API 中大量使用了this.getClass().getResource("xyz.class") 方法。

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

问题是如何完成这项工作。我需要可以存在于另一个包中的依赖 jar 中的类的 DIR PATH?

【问题讨论】:

  • "期望它应该返回绝对DIR路径"...这个期望是不正确的。

标签: java osgi classloader


【解决方案1】:

你不能。 OSGi 抽象了包内容的位置。假设所有资源 URL 都在文件系统上是对类加载器 API 的滥用。过去已经完成的事实并不能原谅它违反抽象的事实。

话虽如此,Eclipse Equinox 框架实现确实提供了一种特定于实现的方式。见org.eclipse.core.runtime.FileLocator.toFileURL(URL)

【讨论】:

    猜你喜欢
    • 2013-06-06
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    相关资源
    最近更新 更多