Контекст таков: у меня есть класс со всеми статическими методами и статический блок инициализации. Этот класс является частью веб-приложения, которое упаковано как война и развернуто внутри WebSphere 10.Можно ли сбросить NoClassDefFoundError ПОСЛЕ того, как класс был загружен/использован?
Бывают ситуации, когда другие классы в войне пытаются вызвать методы в этом классе, только чтобы получить NoClassDefFoundError. Что мне кажется странным, так это то, что из журналов видно, что методы класса и т. Д. Уже были вызваны несколько раз, успешно, но внезапно, идентичный (ранее успешный) вызов метода в настоящее время генерирует NoClassDefFoundError. В этот момент любое будущее таких вызовов статическим методам класса будет генерировать эту ошибку (до тех пор, пока контейнер WebSpehere не будет перезапущен или война не будет развернута).
Что заставляет меня задуматься, почему класс, похоже, работает некоторое время, прежде чем бросать NoClassDefFoundError. documentation по этому исключению говорит:
Определение класса поиска было выполнено, когда выполняемый в данный момент класс был скомпилирован, но определение больше не может быть найдено.
Итак, мой вопрос: как класс полезен для использования некоторое время, четко реагируя на вызовы его статическим методам, а затем бросает NoClassDefFoundError?
Я бы заглянуть в пользовательский класс погрузчиков/агентов, которые вы используете в вашем веб-приложение. Если загрузчик классов, который загрузил класс, больше не является частью иерархии загрузчика (например, если вы используете пользовательские загрузчики классов и там есть какая-то ошибка), эти ошибки могут возникнуть. – Matthias
@ Matthias - это просто простой WebSphere 10.3.3, без настройки для его загрузчиков классов или чего-либо подобного. –