为了账号安全,请及时绑定邮箱和手机立即绑定

如果应用程序从 IntelliJ IDEA 运行,则找不到 Mapstruct 生成的类

如果应用程序从 IntelliJ IDEA 运行,则找不到 Mapstruct 生成的类

缥缈止盈 2023-09-13 10:52:22
我有一个使用 Gradle 4.8.1 构建的基于 Java 11 的应用程序,它使用 Mapstruct 1.3.0.Final。我使用IntelliJ IDEA Ultimate 2019.2.3进行开发。问题:如果我从 IntelliJ IDEA 启动该应用程序,该应用程序将无法工作,但使用 Gradle 构建时,它可以工作。当我从 IntelliJ 启动应用程序时,我在运行时收到以下错误:ClassNotFoundException: Cannot find implementation for com.mycompany.MyMapper    at org.mapstruct.factory.Mappers.getMapper(Mappers.java:75)    at org.mapstruct.factory.Mappers.getMapper(Mappers.java:58)我的项目设置:我使用了另一种注释处理工具 - Lombok,它工作得很好。我把它们放在我的依赖项中,如下所示:compileOnly('org.projectlombok:lombok:1.18.10')annotationProcessor('org.projectlombok:lombok:1.18.10')compile('org.mapstruct:mapstruct:1.3.0.Final')annotationProcessor('org.mapstruct:mapstruct-processor:1.3.0.Final')如何重现:从需要使用 Mapstruct 生成的类的 IntelliJ UI 启动单元测试就足够了。问题:如何让IntelliJ IDEA正确应用Mapstruct注释处理器?我尝试过的:我在 StackOveflow 和GitHub 上遇到了类似的问题。不幸的是,他们没有帮助。他们要么使用旧版本的库、旧的 JVM,要么只是解决方案不起作用。
查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

请在“设置/首选项 | 构建、执行、部署 | 构建工具 | Gradle”中设置“使用 Gradle 构建和运行”



查看完整回答
反对 回复 2023-09-13
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

以下更改对我有用:添加生成的目录作为源代码。

sourceSets {
    main.java.srcDirs += "build/generated/sources/annotationProcessor/java/main"
    }

为 Mapper 类添加 componentModel - (这告诉 Micronaut 为映射器创建一个 bean。)

@Mapper(componentModel = "jsr330")


查看完整回答
反对 回复 2023-09-13
  • 2 回答
  • 0 关注
  • 54 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信