首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保从eclipse插件调用时加载外部jars类?

问如何确保从eclipse插件调用时加载外部jars类?
EN

Stack Overflow用户
提问于 2010-03-02 09:11:19
回答 1查看 1.6K关注 0票数 3

我开发了一个eclipse插件,它引用了外部安装目录中的一个外部jar。因此,我在包类路径中添加了一个条目,如下所示:

代码语言:javascript
复制
Bundle-ClassPath: external:C:\mylib.jar

我的类正确加载-而且插件能够检测到这个外部lib中存在的类lib。

但是,方法a() -我在类MyClass中调用失败了。

方法a()如下:

代码语言:javascript
复制
public void a()
{
  URL url = this.class.getClassLoader().getResource("META-INF/startup-jar ");
  ...
}

因此,返回的URL是eclipse目录C:\eclipse3.4\test,而不是外部jar的物理位置,即C:\mylib.jar

这导致方法a()失败。我的问题是-

因为我没有将外部jar复制到插件目录(它只存在于plugin类路径中)

如何确保类加载器获得外部jar的URL路径,而不是插件目录的URL路径?

注意:我不能更改外部jar中的类加载机制,因为它是第三方依赖项,我无法控制代码。因此,请提出一个解决方案,以帮助我正确加载外部jar类,这样我就可以获得正确的URL。

谢谢你的帮助--提前

为了进一步解释我所面临的问题::我的外部jar在我的服务器安装的安装目录中。

当外部jar中的类调用URL = this.class.getClassLoader().getResource("startup-jar")时

它返回相对于eclipse3.4路径的URL -类似于C:\eclipse3.4.

这个URL用于获取引导目录(服务器的安装目录)。

因此,它应该返回一个相对于服务器安装目录的路径,但返回一个相对于eclipse安装目录的路径。

因此,我无法调用服务器上的任何API,因为它试图使用的服务器安装目录是不正确的。

因此,我想知道处理这个问题的最佳方法是什么,以便该方法调用返回服务器安装dir,而不是eclipse包路径。

EN

回答 1

Stack Overflow用户

发布于 2010-03-02 09:34:18

您不能用正确的OSGI元数据包装这个第三方依赖项,并将其作为插件/包安装吗?我们这样做的所有第三方依赖,包括有问题的,如Hibernate,并使他们的工作。

如果它是一个流行的开放源码库,您可能可以在Spring的存储库中添加OSGi元数据来找到它:www.SpringSoure.com/存储库/app

一般来说,我不推荐您在问题中描述的引用外部JAR的模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2361956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档