16

假设我有一个项目K

K取决于lib.jar

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

如果我x.y.z.FooK中创建相同的类,那么在这个项目中,当我创建 的实例时Foo,JVM 现在会FooK中使用而不是在 中lib.jar吗?


如果它不稳定或依赖于某些东西,如何确保Foo应该使用K的版本而不是lib.jar

4

1 回答 1

3

独立应用程序(至少没有自定义类加载器)中的 Java 类加载行为是稳定的。确保您的 k.jar(或路径)在-cpjava 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>
         ...
于 2013-01-05T04:13:44.377 回答