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