gpt4 book ai didi

java - 从几个版本运行几个 jar,但具有相同的名称和相同的类名

转载 作者:行者123 更新时间:2023-11-30 10:16:20 25 4
gpt4 key购买 nike

我在 Websphere Application Server 上有 5 个共享库。

它们中的每一个都指向一个具有相同名称的不同 jar(例如 projectA.jar)。

所有 jar 都包含相同的类名(同一棵树),但是,jar 之间的类代码并不相同,因为它们中的每一个都是前任的新版本。

我这样做是因为我在应用服务器上有 5 个应用,每个应用都需要另一个版本的 projectA.jar。

是否可以将相同的 jar 放在同一个应用服务器中,具有相同的类,但内部代码不同?

最佳答案

没关系,只要您保持库和应用程序之间的分离,并且它们之间没有任何直接通信。如果您只将每个共享库与需要它的应用程序相关联,那么这些库将被添加到应用程序类加载器中,除非您正在执行一些非常规的操作,否则它们之间不应该有任何可见性。每个应用程序将从它自己的 projectA.jar 副本加载它自己的必要类副本。如果您有跨应用程序调用的东西,那确实会增加 ClassCastExceptions 和 Verify 或 LinkageErrors 的风险,但如果这只是五个完全独立的应用程序,您应该没问题。

我要指出的是,如果您没有充分保持分离(例如,您将库组合在一起,或者将多个库与一个应用相关联,或者将它们全部与服务器级共享库类加载器相关联),那么您可能有麻烦了。 Java 可以处理同名的多个类,但不能在单个类加载器中处理 - 如果您在单个应用程序中同时使用 1/projectA.jar 和 2/projectA.jar 中的同一个类,则无法实际使用它们类加载器或共享库。由于听起来您对每个应用程序的依赖关系有非常深入的了解,希望这对您来说不是一个高风险。

关于java - 从几个版本运行几个 jar,但具有相同的名称和相同的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50134091/

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