假设我有一个项目 K
K 取决于lib.jar
在lib.jar
中,有一个名为x.y.z.Foo
如果我在 K 中创建相同的班级x.y.z.Foo
,那么在我创建Foo
的实例时,此项目中JVM将使用Foo
K 而不是lib.jar
?
如果它不稳定或取决于某些内容,如何确保Foo
应该使用 K 的版本而不是lib.jar
?
答案 0 :(得分:1)
独立应用程序中的Java类加载行为(至少没有自定义类加载器)是稳定的。确保你的k.jar(或路径)位于-cp
java arg
java -cp k.jar lib.jar ...
或将依赖项添加到K项目的/META-INF/MANIFEST.MF
...
Class-Path: lib1.jar lib2.jar
...
并运行
java -jar k.jar
将首先加载k.jar类
在Maven中
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
...