如果我将两个不同版本的jar文件放在类路径中,会发生什么? 例如: log4j1.4.jar and log4j1.5.jar保存在classpath中 会发生什么?
log4j1.4.jar and log4j1.5.jar
尽管我也建议不要这样做,但我仍然想尝试回答您的原始问题:
Java具有类加载器层次结构,因此,如果两个JAR都处于层次结构的不同级别,则类加载器将定义其优先级。最受欢迎的示例是Web应用程序类加载器层次结构(例如Tomcat),其中应用程序类的优先级高于容器类的优先级(如果两者均适用)。
如果两个JAR都在同一个类加载器(相同级别)中,则文件系统将确定顺序,从开发人员的角度来看这是不可靠的,因此应将其视为随机的。仅加载一个,但您不知道加载哪个,甚至可能不会从依赖关系问题中得到错误。如果遇到依赖关系问题,则可能是java.lang.Errors,例如VerifyError,NoClassDefFoundError,NoSuchMethodError。