首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头图像中的ClassNotFound org.mapstruct.factory.Mappers

码头图像中的ClassNotFound org.mapstruct.factory.Mappers
EN

Stack Overflow用户
提问于 2021-09-04 17:57:13
回答 2查看 667关注 0票数 0

我正在使用Mapstruct (与lombok一起使用),而Mapstruct在调用端点(使用MapStruct将DTO映射到实体)后对应用程序进行对接时失败。

java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:435) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)的java.lang.ClassNotFoundException: org.mapstruct.factory.Mappers

当我在本地运行这个应用程序时,一切都运行得很好,但是修改这个应用程序会使Mapstruct失败。

Dockerfile:

代码语言:javascript
复制
FROM openjdk:15-alpine
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

build.gradle中的依赖项和停靠插件

代码语言:javascript
复制
docker {
    dependsOn build as Task
    name "${project.group}/${jar.baseName}"
    files bootJar.archivePath
    buildArgs(['JAR_FILE': "${bootJar.archiveName}"])
}

dependencies {
    .....

    compileOnly 'org.mapstruct:mapstruct:1.4.1.Final'
    annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.1.Final'
}

我是不是缺少了什么,或者我还需要做些什么才能让Impl类在对接器中得到呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-05 16:22:45

我不太了解你是如何塑造你的码头形象的。但是,我认为问题在于您使用compileOnly作为mapstruct依赖项( Mappers工厂所在的位置)。

我认为不再鼓励使用compileOnly,而且对org.mapstruct:mapstruct来说也不是正确的。如果您正在为映射程序使用默认的组件模型,并且希望使用Mappers工厂,那么org.mapstruct:mapstruct依赖项肯定不是compileOnly。你需要改变你的码头形象才能正常工作。

票数 0
EN

Stack Overflow用户

发布于 2021-09-04 18:41:26

我认为您需要使用依赖关系构建jar。如果您使用maven构建它,只需在pom.xml中添加以下内容

<descriptorRef> jar-with-dependencies </descriptorRef>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69057765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档