Size: a a a

2020 July 23

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Всем привет! Столкнулся с проблемой при создании кастомного логера в log back, падает в ошибку  Could not create an Appender of type [package.CustomAppender]. В xml файле в класс идея проваливается. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type a.DbAppender
at ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type. Продебажил до ошибки.  В классе OptionHelper вызывается метод classLoader.loadClass("package.CustomAppender");, падает в ошибку ClassNotFoundException. То что он класс найти не может, это понятно. Но вот почему- не ясно. Создал тестовый проект, там все работает. Единственное отличие это сборка, где не работает -gradle, где работает maven.Подскажите пожалуйста, куда копать?
Я бы копал в сторону того, а что лежит в артефакте
источник

AM

Aleksander Melnichni... in pro.jvm
Зашел бы в build папку гредла, распаковал ваш джарник и посмотрел, а есть ли этот класс
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Зашел бы в build папку гредла, распаковал ваш джарник и посмотрел, а есть ли этот класс
2 минуты
источник

AM

Aleksander Melnichni... in pro.jvm
Если он есть, и classLoader.loader кидает ошибку - я бы смотрел, а что это такой за класслоадер грузит мой класс и как он работает
источник

A

Aleksandr in pro.jvm
Чисто беглым взглядом смотрю

<appender name="Db" class="package.DbAppender">


Вы не пробовали сделать scan="true” у конфига?
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksandr
Чисто беглым взглядом смотрю

<appender name="Db" class="package.DbAppender">


Вы не пробовали сделать scan="true” у конфига?
Нет. Сейчас попробую.
источник

A

Aleksandr in pro.jvm
у вас же там просто апендер другой из пакета берётся
источник

A

Aleksandr in pro.jvm
Не уверен, конечно, что в этом может быть причина, но сам сталкивался с подобной проблемой раньше
источник

AM

Aleksander Melnichni... in pro.jvm
Aleksandr
у вас же там просто апендер другой из пакета берётся
Ну и да - я бы еще сверил все имена пакет + имя класса в конфиге и в самом классе
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Ну и да - я бы еще сверил все имена пакет + имя класса в конфиге и в самом классе
Уже специально перенес в другой пакет. идея проваливается. В дебаге руками копировал reference (пробовал загрузить класс), ошибка сохранялась
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksandr
Чисто беглым взглядом смотрю

<appender name="Db" class="package.DbAppender">


Вы не пробовали сделать scan="true” у конфига?
Попробовал. Также
источник

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Попробовал. Также
Распаковывайте джарник =)
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Распаковывайте джарник =)
Немного лень) Если я смогу рестом вызвать класс, который вызовек аппендер, можно считать что он есть, верно?
источник

AM

Aleksander Melnichni... in pro.jvm
Если вы в дебаге class.forName("package.class")  вызовете и вам вернет класс
источник

AM

Aleksander Melnichni... in pro.jvm
то да
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Если вы в дебаге class.forName("package.class")  вызовете и вам вернет класс
Посмотрел файл. Там есть класс
источник

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Посмотрел файл. Там есть класс
А Class.forname вернул класс?
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
А Class.forname вернул класс?
Это очень интересно. В конфигураторе (который аппендеры создает) он падает в ошибку. Но после старта сервера, когда в ресте, в дебаге делаю запрос- все норм....
источник

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Это очень интересно. В конфигураторе (который аппендеры создает) он падает в ошибку. Но после старта сервера, когда в ресте, в дебаге делаю запрос- все норм....
Так там другой скорее всего класслоадер, который не так может работать
источник

AM

Aleksander Melnichni... in pro.jvm
А у бута свой класслоадер - который умеет со своей паковкой работать
источник