java.lang.LinkageError: нарушение ограничения загрузчика; при разрешении метода интерфейса (в классе обслуживания)

Моя структура проекта похожа на три пакета, а именно Rest (в котором размещены Rest API и его классы Implementaion), Service API (в котором определены интерфейсы служб) и Service Impl (в котором размещена реализация Service API). Мой код в PersonalInfoServiceImpl просто установив PersonalInfoRequestBean значения для PersonalInfoResponseBean (+ еще несколько свойств) объекта и возврата PersonalInfoResponseBean, Работало нормально. Но после интеграции с несколькими другими перехватчиками, теперь внезапно я начал получать следующую ошибку в этом коде:

Caused by java.lang.LinkageError: loader constraint violation: when resolving 
interface method "personal.info.service.api.PersonalInfoService.getPersonalInfoDetails(Lcom//personal/info/model/PersonalInfoRequestBean;)Lpersonal/info/model/PersonalInfoResponseBean;" 
the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) 
of the current class, personal/info/rest/impl/PersonalInfoRESTServiceImpl, 
and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) 
for the method's defining class, personal/info/service/api/PersonalInfoService, 
have different Class objects for the type personal/info/model/PersonalInfoRequestBean 
used in the signature at personal.info.rest.impl.PersonalInfoRESTServiceImpl.getPersonalInfoDetail(PersonalInfoRESTServiceImpl.java:112)

Может кто-нибудь помочь мне в этом вопросе? Мы используем Apache karaf для развертывания наших сервисов. Итак, если это связано с зависимостями karaf / delpoyment / maven, то как можно отладить эту проблему?

1 ответ

Решение

Это сообщение об ошибке означает, что у вас есть 2 загруженных класса personal/info/model/PersonalInfoRequestBean с разными загрузчиками классов. Один из этих загрузчиков классов загружает интерфейс PersonalInfoService и другие реализации нагрузки PersonalInfoRESTServiceImpl, Вы должны избегать этого и вашего класса personal/info/model/PersonalInfoRequestBean должен быть определен только загрузчиком классов, который загружает интерфейс.

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