在 java 中重写类
2022-09-03 08:05:50
假设我有一个项目K
K 取决于lib.jar
在 中,有一个名为lib.jar
x.y.z.Foo
如果我在 K 中创建相同的类,那么在这个项目中,当我创建一个实例时,现在 JVM 将在 K 中使用而不是在 ?x.y.z.Foo
Foo
Foo
lib.jar
而如果它不稳定或者依赖于什么,如何确保应该使用K的版本而不是?Foo
lib.jar
假设我有一个项目K
K 取决于lib.jar
在 中,有一个名为lib.jar
x.y.z.Foo
如果我在 K 中创建相同的类,那么在这个项目中,当我创建一个实例时,现在 JVM 将在 K 中使用而不是在 ?x.y.z.Foo
Foo
Foo
lib.jar
而如果它不稳定或者依赖于什么,如何确保应该使用K的版本而不是?Foo
lib.jar
独立应用程序中的 Java 类装入行为(至少在没有自定义类装入器的情况下)是稳定的。在 java arg 中,请确保您的 k.jar(或 path)位于 lib.jar之前-cp
java -cp k.jar lib.jar ...
或将依赖项添加到 /META-INF/MANIFEST。您的 K 项目的 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>
...