【发布时间】:2011-01-22 15:33:03
【问题描述】:
我开发了一个 Eclipse 插件,它引用了一个存在于外部安装目录中的外部 jar。 所以我在我的包类路径中添加了一个条目,如下所示:
Bundle-ClassPath: external:C:\mylib.jar
我的类加载正确 - 插件能够检测到此外部 lib 中存在的类 MyClass。
但是,方法a() - 我在类MyClass 中调用失败了。
方法a()如下:
public void a()
{
URL url = this.class.getClassLoader().getResource("META-INF/startup-jar ");
...
}
所以返回的 URL 是 eclipse 插件目录的 URL C:\eclipse3.4\test
而不是外部 jar 的物理位置,即C:\mylib.jar
这导致方法a() 失败。现在,我的问题是 -
因为我没有将外部 jar 复制到我的插件目录(它只存在于插件类路径中)
如何确保类加载器获取我的外部 jar 而不是插件目录的 URL 路径?
注意:我无法更改外部 jar 中的类加载机制,因为它是第三方依赖项,我无法控制代码。所以请提出一个解决方案,帮助我正确加载外部 jar 类,以便我可以获得正确的 URL。
非常感谢您的帮助 - 提前
解释一下我面临的问题:: 我的外部 jar 存在于我的服务器安装的安装目录中。
当我的外部 jar 中的类调用 URL 时 url = this.class.getClassLoader().getResource("startup-jar")
它返回相对于 Eclipse 包路径的 URL - 像 C:\eclipse3.4...
这个URL用于获取启动目录(服务器的安装目录)。
所以它应该返回一个相对于服务器安装目录的路径,而是返回一个相对于eclipse安装目录的路径。
因此,我无法调用服务器上的任何 API,因为它尝试使用的服务器安装目录不正确。
所以我想知道我可以处理这个问题的最佳方法是什么,以便此方法调用返回服务器安装目录而不是 Eclipse 包路径。
【问题讨论】:
-
对不起我的
class.getResource回答。
标签: eclipse plugins jar external classloader