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
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
...