Подтвердить что ты не робот

Класс переопределения в java

Предположим, у меня есть проект 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?

4b9b3361

Ответ 1

Поведение загрузки класса Java в автономном приложении (по крайней мере, без пользовательских загрузчиков классов) является стабильным. Убедитесь, что ваш k.jar(или путь) появляется перед lib.jar в -cp java arg

java -cp k.jar lib.jar ...

или добавить зависимости к /META -INF/MANIFEST.MF вашего проекта K как

...
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>
         ...