Классы, сгенерированные Mapstruct, не найдены, если приложение запускается из IntelliJ IDEA - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть приложение на основе 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.

Вопрос: Как заставить IntelliJ IDEA правильно применять процессоры аннотаций Mapstruct?

Что я пробовал: Я столкнулся с похожими проблемами в StackOveflow и на GitHub . К сожалению, они не помогли. Они либо используют старые версии библиотеки, либо старую JVM, либо просто решения не работают.

1 Ответ

2 голосов
/ 30 сентября 2019

Пожалуйста, установите «Сборка и запуск с использованием Gradle» в «Настройки / Предпочтения | Сборка, выполнение, развертывание | Инструменты сборки | Gradle»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...