@Cameron Skinner: нет, вы на 100% правы, я неправильно сформулировал свой вопрос :)

я есть вопрос относительно гарантий, если таковые имеются, в следующем сценарии (обратите внимание, что вопрос не"Как это сделать по-другому?"на самом деле вопрос о порядке загрузки классов в следующем случае (чтобы лучше понять, как работает загрузка классов).

Вот гипотетический сценарий ... Там есть.war файл, имеющий следующую (частичную) структуру каталогов:

 WEB-INF/classes/com/acme/Bunny.class
 .
 .
 .
 WEB-INF/lib/acme.jar

И то и другоеBunny.class файлы имеют импорт, ссылаясь на другие классы изacme.jar

Bunny.class вWEB-INF / классы / ... единственный класс, который имеет то же имя / путь, что и классacme.jar.

.jar файлacme.jar также содержитcom.acme.Bunny (и никаких специальных приемов загрузчика классов не используется).

Я понимаю, что спецификация Java гарантирует, что класс не будет загружен до тех пор, пока он не будет фактически использован (или «загружен вручную») программой, поэтому, если вы запишете тысячи .jar, скажем, в .war, загрузчик классов не начинает загружать десятки тысяч классов.

(редактировать)

Но как насчет порядка, в котором загружаются два класса в приведенных выше примерах?

должны были быть сформулированы:

Но как решить, какой из двух классов выше загружен?

или что-то типа того :)

Есть одна гарантия:com.acme.Bunny должны быть использованы до любого другого класса изcom.acme ....

В основном в Википедии написано следующее:

Самые сложные проблемы с адом JAR возникают в обстоятельствах, которые используют всю сложность системы загрузки классов. Java-программа не обязана использовать только один «плоский» загрузчик классов, но вместо этого может состоять из нескольких (или фактически неопределенного числа) вложенных, взаимодействующих загрузчиков классов. Классы, загружаемые разными загрузчиками классов, могут взаимодействовать сложным образом, не полностью понятным разработчиком, что приводит к необъяснимым ошибкам или ошибкам.

Вот мне и интересно: могу ли я быть уверен, что/classes/com/acme/Bunny.class будет загружен до того, как.jar внутриWEB-INF / Библиотека / реж или нет?

Ответы на вопрос(6)

Ваш ответ на вопрос