Java - 在构建 class 路径和运行时 class 路径优先级中相同 class
Java - Same class in build classpath and runtime classpath priority
我不是Java专家,我对class的解决方案有疑问,以防发生冲突。考虑我有两个 jar 文件 external-library-0.0.1
、external-library-0.0.2
的场景,它们都有 class Foo
.
如果我在构建 class 路径中仅使用 external-library-0.0.1.jar
进行构建,然后在运行时 class 路径中添加 external-library-0.0.2.jar
,即 class Foo
会用吗?
将使用运行时类路径中的那个。
另一个 JVM 在运行时根本不知道。
如果有任何差异(例如,方法不存在),您将在运行时收到错误消息。
从程序员的角度来看,假设随机。永远不要在 class 路径上放置多个相同 class 的定义,无论是在编译时还是在运行时。
可以指出,有时有些工具会尝试提供有关加载顺序的保证,但依赖它会使您的应用程序本质上很脆弱,并且这种错误在您需要时确实很难修复。
我不是Java专家,我对class的解决方案有疑问,以防发生冲突。考虑我有两个 jar 文件 external-library-0.0.1
、external-library-0.0.2
的场景,它们都有 class Foo
.
如果我在构建 class 路径中仅使用 external-library-0.0.1.jar
进行构建,然后在运行时 class 路径中添加 external-library-0.0.2.jar
,即 class Foo
会用吗?
将使用运行时类路径中的那个。
另一个 JVM 在运行时根本不知道。
如果有任何差异(例如,方法不存在),您将在运行时收到错误消息。
从程序员的角度来看,假设随机。永远不要在 class 路径上放置多个相同 class 的定义,无论是在编译时还是在运行时。
可以指出,有时有些工具会尝试提供有关加载顺序的保证,但依赖它会使您的应用程序本质上很脆弱,并且这种错误在您需要时确实很难修复。