eclipse 使用 mapstruct 报错NoClassDefFoundError 解决
原创
©著作权归作者所有:来自51CTO博客作者路人甲加油的原创作品,请联系作者获取转载授权,否则将追究法律责任
mapstruct 用于bean复制,在编译时,将需复制的bean通过生成代码的形式进行复制。解决多层的类的问题。
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.0.Final</version>
</dependency>
这是由于编辑eclipse需安装插件所致。如果不安装插件,那么运行时,会提示。
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class ***.IncIndicatorContentMapper

解决问题:
window-eclipse marketplace 搜索m2e-apt。install

安装后,需重启eclipse。然后配置maven
window---preferences 搜索maven ,在annotation processing
选择如下图

然后点击同意并关闭,系统会自动编译eclipse中的maven工程,只要使用了该包功能的,那么会自动在编译类*/target/**classes/***下生成相应的实现类。
定义复制类
/**
* @author uto
*/
@Mapper
public interface TestMapper {
TestMapper INSTANCE = Mappers.getMapper(TestMapper .class);
com..biz.entity.AfficheListBizRes copyAfficheListBizRes(com.message.entity.AfficheListBizRes source);
}
编译后:自动产生一个接口实现类。

调用使用
com..biz.entity.AfficheListBizRes responseBean = IncIndicatorContentMapper.INSTANCE.copyAfficheListBizRes(baseResponse.getData());