假设我有一个项目K
K取决于lib.jar
在lib.jar
中,有一个类名为x.y.z.Foo
如果我x.y.z.Foo
在K中创建相同的类,那么在这个项目中,当我创建 的实例时Foo
,JVM 现在会Foo
在K中使用而不是在 中lib.jar
吗?
如果它不稳定或依赖于某些东西,如何确保Foo
应该使用K的版本而不是lib.jar
?
假设我有一个项目K
K取决于lib.jar
在lib.jar
中,有一个类名为x.y.z.Foo
如果我x.y.z.Foo
在K中创建相同的类,那么在这个项目中,当我创建 的实例时Foo
,JVM 现在会Foo
在K中使用而不是在 中lib.jar
吗?
如果它不稳定或依赖于某些东西,如何确保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 中是
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
...