当前位置:  开发笔记 > 编程语言 > 正文

如果我们在classpath中放置两个不同版本的jar文件会发生什么?

如何解决《如果我们在classpath中放置两个不同版本的jar文件会发生什么?》经验,为你挑选了1个好方法。

如果我在类路径中放置两个不同版本的jar文件,会发生什么?
例如: log4j1.4.jar and log4j1.5.jar保持在classpath
会发生什么?



1> 小智..:

虽然我也建议不要这样做,但我仍然想尝试回答你原来的问题:

Java具有类加载器层次结构,因此如果在层次结构的不同级别中同时存在两个JAR,则类加载器会定义其优先级.最常见的示例是Web应用程序类加载器层次结构(例如Tomcat),其中应用程序类的优先级高于容器类(如果两者都适用).

如果两个JAR都在同一个类加载器中(相同级别),则文件系统确定顺序,这从开发人员的角度来看是不可靠的,因此请将其视为随机.只有一个加载,但你不知道哪个,甚至可能不会从依赖问题中得到错误.如果遇到依赖性问题,它们可能是java.lang.Errors,例如VerifyError,NoClassDefFoundError,NoSuchMethodError.


这是一个很好的答案,除了它给作为储存容器的罐子提供了很多信用 - 它关于罐子里面的类和包装.如果两个jar都定义完全相同的完全限定类名,则只会发生冲突.JVM肯定会加载两个jar - 但它不会加载已经加载的类.
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有