一尘不染

如果将两个不同版本的jar文件放入类路径中会发生什么?

tomcat

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


阅读 270

收藏
2020-06-16

共1个答案

一尘不染

尽管我也建议不要这样做,但我仍然想尝试回答您的原始问题:

Java具有类加载器层次结构,因此,如果两个JAR都处于层次结构的不同级别,则类加载器将定义其优先级。最受欢迎的示例是Web应用程序类加载器层次结构(例如Tomcat),其中应用程序类的优先级高于容器类的优先级(如果两者均适用)。

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

2020-06-16