Если вы делаете проект Maven, важно включить процессор аннотаций, который генерирует картографы.Затем, как только проект узнает, как их генерировать, вы сможете использовать их в своем коде.
Процессоры аннотаций запускают , а компилятор работает, что означает, что вы технически можете получитьнаписать код, который не появляется, он скомпилирует.Затем, когда компилятор работает, он просит все зарегистрированные обработчики аннотаций сгенерировать код на основе аннотаций и существующих типов ( не отсутствующие ссылки, такие как App_Sample_MapperImpl
, как вы могли бы подумать).Затем процессор запускается, генерирует отсутствующий класс, а затем продолжается компиляция.
Обычно происходит сборка во время написания кода (например, eclipse делает это при каждом сохранении файла, intellij делает это)когда вы запрашиваете сборку и т. д.), а затем класс существует и на него можно ссылаться в будущем.Даже когда проект очищается и перестраивается, хотя ссылка кажется, что она не должна работать, она будет работать, как только запустится компилятор.
В этом случае нам нужно будет следовать примеручтобы убедиться, что процессор присутствует.в https://github.com/DominoKit/gwt-jackson-apt/blob/f60d0358b90bcbf78d066796f680aeae1d7156bb/samples/shared-mappers/shared-mappers-shared/pom.xml, мы видим это в зависимостях:
<dependency>
<groupId>org.dominokit.jackson</groupId>
<artifactId>jackson-apt-processor</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
Это помечено scope=provided
, так как это нужно только для компиляции, и не должно быть включено в более поздние графики зависимостей.Для каждой конкретной среды IDE может потребоваться указать дополнительные параметры, чтобы она автоматически запускалась повторно (флажок в Eclipse, я полагаю, ничего в IntelliJ, и я не использовал другие среды IDE слишком долго, чтобы сказать).
Последнее замечание для maven: вы должны использовать относительно недавний плагин maven-compiler-plugin, чтобы сгенерированный код обрабатывался правильно: последний - 3.8.0, опубликован в июле 2018 года, но я думаю, что что-то после 3.5.1 будет достаточно, еслиВы должны использовать более старый.