Assume I have a project K
K depends lib.jar
In lib.jar , there is a class named x.y.z.Foo
If i create the same class x.y.z.Foo in K , then in this project when I create a instance of Foo , now will JVM use Foo in K rather than in lib.jar ?
And if it's unstable or depends on something , how to make sure that Foo should use K's version rather than lib.jar?
解决方案
Java class loading behaviour in a standalone application (at least with no custom classloaders) is stable. Make sure that your k.jar (or path) comes before lib.jar in -cp java arg
java -cp k.jar lib.jar ...
or add dependencies to /META-INF/MANIFEST.MF of your K project as
...
Class-Path: lib1.jar lib2.jar
...
and run
java -jar k.jar
k.jar classes will be loaded first
in Maven it is
maven-jar-plugin
true
...