Когда проверяется и используется атрибут Class-Path в файле Jar - PullRequest
0 голосов
/ 05 мая 2011

У меня есть академический вопрос, для которого я не могу найти соответствующее documentatino из Sun / Oracle.

У меня есть набор файлов Jar, и java vm запускается так:

java -cp one.jar:two.jar:helper.jar my.company.project.Main

Как видите, я не использую опцию -jar , но указываю путь к классам. helper.jar содержит только файл манифеста, определяющий путь к классу, содержащий оставшиеся необходимые файлы jar.

Поскольку я не использую -jar опция командной строки мне интересно, если этот манифест Class-Path оценивается и используется.(Да, я знаю, что делает -jar , я знаю, для чего предназначен Main-Class, и я знаю, как использовать Class-Path в сочетании с -jar . Я только неНе знаю, работает ли он без , используя -jar )

Или, чтобы уточнить мой вопрос: он работает надежно и где-то задокументирован в официальном документе Sun / Oracle?

Спасибо

1 Ответ

1 голос
/ 24 марта 2015

Запись пути к классу из манифеста файла JAR всегда используется для расширения пути к классу при загрузке классов из этого JAR. Не имеет значения, используете ли вы переключатель -jar или нет.

Я был действительно удивлен этим поведением, но его легко воспроизвести на простом примере с использованием двух классов A и B. Пусть A ссылается на B. Поместите каждый класс в свой собственный файл JAR. Добавьте манифест к A.jar, включающий Class-Path: B.jar. Тогда следующая команда правильно разрешит B: java -cp A.jar A.

Это также описано здесь Как средство запуска Java находит классы пути JAR-класса section Как средство запуска Java находит классы пути JAR-класса .

...