Статический вызов Class.getName ()

Я наткнулся на следующий код в NestedRuntimeException в org.springframework.core:

static {
    NestedExceptionUtils.class.getName();
}

Какая польза от такого блока?

Я предполагаю, что это уловка, заставляющая загрузчик классов JVM загружать класс NestedExceptionUtils. Но, возможно, есть и другие причины, специфичные для Spring.

Tim Biegeleisen 15.05.2018 07:59

Мне было интересно, почему нет комментариев к такой строке, поэтому я поискал источник. Конечно, прямо перед этим утверждением есть комментарий, который в значительной степени объясняет это, он просто не включен в вопрос: «С нетерпением загрузите класс NestedExceptionUtils, чтобы избежать проблем с взаимоблокировкой загрузчика классов в OSGi при вызове getMessage (). Сообщил Дон Браун; SPR- 5607 "

kapex 15.05.2018 11:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
18
2
934
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

eagerly загрузит класс NestedExceptionUtils, чтобы избежать взаимоблокировки загрузчика классов. Сообщалось об ошибке (SPR-5607) «Нетривиальное NestedRuntimeException.getMessage () может вызвать взаимоблокировки в OSGi», и это решение той же проблемы.

Отредактировано:

Это также упоминается в исходном коде в качестве комментария. Для получения полной документации по исходному коду, пожалуйста, следуйте ссылка на сайт. Вот часть исходного кода класса NestedRuntimeException.

static {
    // Eagerly load the NestedExceptionUtils class to avoid classloader deadlock
    // issues on OSGi when calling getMessage(). Reported by Don Brown; SPR-5607.
    NestedExceptionUtils.class.getName();
}

Спасибо, что поделились ссылкой!

Novice User 15.05.2018 08:05

Им действительно следовало добавить комментарий по этой причине.

Bergi 15.05.2018 14:59

@Bergi есть комментарий прямо перед строками, указанными в вопросе

Josef says Reinstate Monica 15.05.2018 15:04

@Bergi В исходном коде есть комментарий с причиной. Я также отредактировал и добавил эти детали. Спасибо!!!

Amit Bera 15.05.2018 15:18

Другие вопросы по теме