Java的替补课[英] Override class in java

问题描述

假设我有一个项目 k

k 取决于lib.jar

在lib.jar中,有一个名为x.y.z.Foo

的类

如果我在 k 中创建相同的类x.y.z.Foo,那么在我创建Foo实例时,现在将JVM使用 in k 而不是lib.jar?


,如果它不稳定或取决于某些东西,则如何确保Foo应该使用 k 的版本,而不是lib.jar?

推荐答案

独立应用程序中的Java类加载行为(至少没有自定义classloaders)是稳定的.确保您的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>
         ...

本文地址:https://www.itbaoku.cn/post/978750.html