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
должен быть определен только загрузчиком классов, который загружает интерфейс.