我有一個使用 Gradle 4.8.1 構建的基于 Java 11 的應用程序,它使用 Mapstruct 1.3.0.Final。我使用IntelliJ IDEA Ultimate 2019.2.3進行開發(fā)。問題:如果我從 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')如何重現(xiàn):從需要使用 Mapstruct 生成的類的 IntelliJ UI 啟動單元測試就足夠了。問題:如何讓IntelliJ IDEA正確應用Mapstruct注釋處理器?我嘗試過的:我在 StackOveflow 和GitHub 上遇到了類似的問題。不幸的是,他們沒有幫助。他們要么使用舊版本的庫、舊的 JVM,要么只是解決方案不起作用。
2 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
以下更改對我有用:添加生成的目錄作為源代碼。
sourceSets?{ ????main.java.srcDirs?+=?"build/generated/sources/annotationProcessor/java/main" ????}
為 Mapper 類添加 componentModel - (這告訴 Micronaut 為映射器創(chuàng)建一個 bean。)
@Mapper(componentModel?=?"jsr330")
添加回答
舉報
0/150
提交
取消