覆盖java中的类

假设我有一个项目K.

K取决于lib.jar

lib.jar ,有一个名为xyzFoo的类

如果我在K中创建相同的类xyzFoo ,那么在我创建Foo实例的这个项目中,现在JVM会在K而不是lib.jar使用Foo吗?


如果它不稳定或取决于某些东西,如何确保Foo应该使用K的版本而不是lib.jar

独立应用程序中的Java类加载行为(至少没有自定义类加载器)是稳定的。 确保你的k.jar(或路径)位于-cp java arg中的lib.jar之前

 java -cp k.jar lib.jar ... 

或者将依赖项添加到K项目的/META-INF/MANIFEST.MF中

 ... Class-Path: lib1.jar lib2.jar ... 

并运行

 java -jar k.jar 

首先加载k.jar类

在Maven它是

    maven-jar-plugin    true     ...