Я отдаю себе отчет в том, что следующие действия иногда влияют на ваш класс, но я хотел бы узнать более точно, когда и как это повлияет на следующее:Исчерпаем, как Java определяет ваш путь к классу?
Class-Path
в манифестеCLASSPATH
в Вашей среде-cp
/-classpath
в командной строке-jar
в командной строке
Пример:
Я знаю, что если -jar
указано, что указанная банку будет указана в пути к классу и что -cp
/-classpath
и CLASSPATH
будут проигнорированы.
Я считаю, что если -cp
/-classpath
указан, CLASSPATH
будет проигнорирован.
Class-Path
- это почти полная тайна для меня прямо сейчас. Я знаю, что если вы укажете банку с -jar
, она будет использовать Class-Path
из манифеста в банке. Будет ли он также использовать Class-Path
банки для классов внутри этой банки, даже если он не был указан -jar
? Будет ли он использоваться для всех классов, а не только для классов внутри банки? Соединяют ли они друг друга или заменяют друг друга? Какое предвидение делает Class-Path
взять в свои classpath
? Будет ли это проверено последним, первое проверено или где-то посередине?
Кроме того, для всех различных способов вы можете указать, что должно быть на вашем пути к классам, что такое правильный синтаксис? Правильны ли/необходимы команды? Могу ли я иметь несколько Class-Path
сек, указанных в манифесте (IE, я могу поставить один на линию, чтобы сделать его более удобным для чтения?)
Хорошее начало. Как записи 'Class-Path' в манифольдах jar вписываются во все это? – ArtOfWarfare
Записи класса-пути в файлах JAR (если они ссылаются либо на переменную env 'CLASSPATH', либо на параметр' -classpath' или '-jar'), то _added_ соответствуют пути поиска класса. Это позволяет интересное транзитивное поведение, когда вы начинаете только с одного JAR-файла, который ссылается на несколько JAR-серверов, которые, в свою очередь, ссылаются еще больше. – Seelenvirtuose
@Seelenvirtuose - Скажем, у меня есть 'a.jar' и' b.jar' на моем 'CLASSPATH'. 'a.jar' имеет манифест с упоминанием' class-Path' 'c.jar'. Являются ли классы внутри 'c.jar' видимыми для классов внутри' b.jar'? Это зависит от того, что вещи были на моем «CLASSPATH» в начале? – ArtOfWarfare