同一个类在多个jar中

我有几个包含完全相同类的jar子。

可以说,例如,A.jar和B.jar具有相同的类Hello.class。 如果我执行以下操作会发生什么:

java -classpath A.jar; B.jar com.testing.testcode

我的问题是它是否会运行? 从我的理解类加载器将扫描类路径,它将返回它首先找到的任何Hello.class。

我知道如果我使用OSGi加载特定的类,我可以避免这个问题。

但我的问题是 – 这是否会运行? 或者java -classpath A.jar; B.jar com.testing.testcode将因为有两个版本的同一个类而崩溃。

这将起作用,并且将使用类路径中的第一个Hello类,因此在这种情况下,来自A.jar的那个

类路径是“路径”。 第一场比赛被采取。

首先检查引导类路径,这包括JRE中的JAR。 顺便说一句您可以添加这些并覆盖系统类,但您不应该这样做,并且可能不允许在您的许可协议中使用它们。

每当您在类路径中包含jar时,在启动时/应用程序类上都会加载到容器中。

现在你的代码是否正常工作将取决于你的容器中首先加载哪个jar,因此如果你很幸运,那么在你当前的设置中它会工作,否则你可能会得到一些错误,说method1 doesn't accept Type1 it should accept Type2