gpt4 book ai didi

java - 需要用于不同类的两个版本的 jar 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:00 26 4
gpt4 key购买 nike

我已经做了很多搜索,但没有找到这个问题的答案。也许这无法完成,但这就是我所拥有的

  1. A.jar依赖于SomeLibrary-V2.jar
  2. A.jar 中的 Class1(间接)依赖于 SomeLibrary-V1.jar。

我想

  1. A.jar 从 V2 获取它的类
  2. Class1(及其触发加载的类)根据需要从 A.jar 中获取 V1 类或类。

我可以自己写child-first classloader在需要时按名称加载 Class1。然后这个类加载器将首先搜索 SomeLibrary-V1.jar(在父类加载器之前)。但是,不会将 Class1 的类加载器设置为我的类加载器,因为它将遵从父级。这意味着当 Class1 试图加载我想从 SomeLibrary-V1.jar 中加载的类时,我的子类加载器将不会被使用。

我想我需要将我的类加载器设置为 Class1 类的类加载器。我查看了将类加载器设置为我的类加载器实例的内省(introspection),但未公开 Class 对象的 classLoader 字段。另一种方法可能是从我的类加载器调用 definedClass() ,但我不能真正使用 parent 。

我看过 this但是那里的答案建议编写一个类加载器,但没有提供任何细节。我在这里提供了一些详细信息,提出了该解决方案的其他问题/问题(我希望 - 我没有代表添加评论)。

我希望我只是在这里遗漏了一些东西。感谢您的帮助。

最佳答案

欢迎来到JAR Hell !这不容易实现,因为类路径在 Java 中的工作方式非常简单。

有解决方案,但没有简单、快速的解决方案。正如您已经发现的那样,您可以使用各种类加载器技巧,或者使用模块系统,例如 OSGi .

希望这在未来会变得更好,当 Java 9 出现时,它将有一个标准的模块系统。

关于java - 需要用于不同类的两个版本的 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36626591/

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