如果应用程序来自 IntelliJ IDEA 运行,则找不到生成的 Mapstruct 类
Mapstruct generated classes are not found if the application is run from IntelliJ IDEA
我有一个基于 Java 11 的应用程序,使用 Gradle 4.8.1 构建,它使用 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')
如何重现: 从 IntelliJ UI 开始单元测试就足够了,需要用 Mapstruct 生成 class。
问题:如何让IntelliJ IDEA正确应用Mapstruct注解处理器?
我的尝试: 我在 StackOveflow 和 on GitHub 上遇到了类似的问题。不幸的是,他们没有帮助。他们要么使用旧版本的库、旧的 JVM,要么只是解决方案不起作用。
请在"Settings/Preferences | Build, Execution, Deployment | Build Tools | Gradle"
中设置"Build and Run using Gradle"
我有一个基于 Java 11 的应用程序,使用 Gradle 4.8.1 构建,它使用 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')
如何重现: 从 IntelliJ UI 开始单元测试就足够了,需要用 Mapstruct 生成 class。
问题:如何让IntelliJ IDEA正确应用Mapstruct注解处理器?
我的尝试: 我在 StackOveflow 和 on GitHub 上遇到了类似的问题。不幸的是,他们没有帮助。他们要么使用旧版本的库、旧的 JVM,要么只是解决方案不起作用。
请在"Settings/Preferences | Build, Execution, Deployment | Build Tools | Gradle"
中设置"Build and Run using Gradle"