gpt4 book ai didi

eclipse - 如何确保从 eclipse 插件调用时加载外部 jar 的类?

转载 作者:行者123 更新时间:2023-12-02 20:54:38 25 4
gpt4 key购买 nike

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

Bundle-ClassPath: external:C:\mylib.jar

我的类正确加载 - 并且插件能够检测到此外部 lib 中存在的类 MyClass
但是,我在类 MyClass 中调用的方法 a() 失败了。

方法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 路径而不是插件目录的 URL 路径?

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

非常感谢您的帮助 - 提前

更多地解释我面临的问题::我的外部 jar 存在于我的服务器安装的安装目录中。

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

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

此URL用于获取启动目录(服务器的安装目录)。

所以它应该返回一个相对于服务器安装目录的路径,而是返回一个相对于eclipse安装目录的路径。

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

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

最佳答案

您不能使用正确的 OSGI 元数据包装此第 3 方依赖项并将其安装为插件/ bundle 吗?我们对所有第 3 方依赖项(包括 Hibernate 等有问题的依赖项)执行了此操作,并使它们正常工作。

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

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

关于eclipse - 如何确保从 eclipse 插件调用时加载外部 jar 的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2361956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com