Добрый день все,Как мы загружаем классы при запуске JVM (сразу)?
Мне было интересно, так или иначе, чтобы статический блок класса выполнялся, даже если сам класс не ссылается?
Я знаю, что, что он лениво загружен таким образом, чтобы просто вызвать любого из функций этого класса начнет инициировать класс,
Однако я хочу, чтобы класс быть начат до вызовов, других слов я хотите, чтобы он запускался при запуске JVM независимо от того, ссылается ли он на него.
Preloading java classes/libraries at jar startup предложил обходной путь, но его на самом деле не решение я ищу (в основном я не хочу, чтобы нужно сделать Class.forName
, я хочу, чтобы это было сделано на JVM старт)
Как бы мы продолжаем это делать?
Хотите знать, что вы делаете? Вы можете загружать все, что вам нужно, в public static void main method, так как это начальная точка любого приложения. У вас нет доступа к этому коду, используйте сервлет загрузки-на-запуск (прослушиватель, фильтр) в случае веб-приложения. Или другой подход, если это не веб-приложение. – Anton
@Umar У меня есть библиотека, которая выполняет некоторые * записи в журнал *. В основном, я хочу, чтобы он делал некоторые вещи при запуске (пока ссылается на библиотеку), но без использования 'MyLibrary.Init.Init()' в начале основного метода. – Pacerier
Это немного круговой. Вы хотите загружать классы при запуске без загрузки классов при запуске определенным образом. Кажется, вы хотите что-то более автоматическое. Стоит отметить, что агрессивная загрузка классов не вызывает методы в этих классах для компиляции. Я бы использовал методы, которые являются критическими, и это приведет к загрузке классов. –