java.lang.LinkageError:加载器约束违规;解析接口方法时(在服务类中)

时间:2016-08-10 06:48:24

标签: java-ee jax-rs karaf 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 个答案:

答案 0 :(得分:0)

此错误消息表示您有2个具有不同类加载器的已加载类personal/info/model/PersonalInfoRequestBean。 其中一个theese类加载器加载接口PersonalInfoService和其他加载实现PersonalInfoRESTServiceImpl。 你应该避免这种情况,你的类personal/info/model/PersonalInfoRequestBean应该只由加载接口的类加载器定义。