Docker镜像部署应用时出现org.mapstruct.factory.Mappers类找不到报错
MapStruct Docker部署类找不到问题解决方案
问题根因
你当前的MapStruct核心依赖scope配置为compileOnly,该配置仅会让依赖在编译阶段生效,不会被打入Spring Boot的可执行fat jar中。本地IDE运行时会自动加载本地依赖库因此功能正常,Docker容器中运行的是独立jar包,缺失MapStruct核心类就会抛出ClassNotFoundException异常。
修复步骤
- 修改
build.gradle中的依赖配置,将compileOnly 'org.mapstruct:mapstruct:1.4.1.Final'修改为implementation 'org.mapstruct:mapstruct:1.4.1.Final',annotationProcessor配置保持不变即可。
调整后的依赖示例:dependencies { ..... // 将原compileOnly修改为implementation,保证MapStruct核心包被打入可执行jar implementation 'org.mapstruct:mapstruct:1.4.1.Final' annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.1.Final' // 若项目同时集成Lombok,需保证annotationProcessor中Lombok的配置顺序在MapStruct之前,避免编译时生成类冲突 } - 重新执行构建命令生成新的bootJar包,再重新构建Docker镜像部署即可解决问题。
内容的提问来源于stack exchange,提问作者Diana J
相关产品推荐
相关产品推荐

