2016-01-11 29 views

回答

6

虽然我也建议不要这样做,我还是喜欢尝试回答你原来的问题:

Java有一个类加载器的层次结构,因此,如果您在不同级别层次,类加载器定义了JAR文件其优越性。最受欢迎的示例是Web应用程序类加载器层次结构(例如Tomcat),其中应用程序类具有比comtainer类更高的优先级(如果两者都适用)。

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

+0

它是一个很好的答案,除了它对罐子只是存储容器 - 罐子内部的类和包装提供了很多功劳。如果两个jar都定义了完全相同的完全限定的类名,则只会有冲突。 JVM绝对会加载这两个jar,但它不会加载已加载的类。 – Gimby

0

可能发生的两件事之一 - 你可以得到1.4版,或者你可以得到1.5。

不建议这样做,特别是如果你使用的是两个版本,其相距很远略有不同的API,可能会导致编译问题

1

简短的回答可能导致问题是你不想这样做

根据您使用JAR提供的类的方式,您可以有明确的异常或奇怪的行为。

相关问题