Подтвердить что ты не робот

Работа с обработчиками аннотаций в Eclipse 4.6 Neon

Я поддерживаю веб-проект Java 7, который использует многострочную аннотацию для хранения определенных констант.

Я мог бы настроить Eclipse отлично, когда я использовал Mars, поэтому я мог запустить Tomcat с развертыванием этого приложения, и он работал как шарм...

Пока я не обновился! Теперь никакая обработка аннотации не выполняется, несмотря на конфигурацию .

Я обнаружил, что эта проблема связана с функцией Eclipse 4.6, как описано здесь

Обработчики аннотаций Java 6 поддерживаются в пакетном компиляторе и в среде IDE. По дизайну процессоры Java 6 выполняются только во время сборки, а не при редактировании. (ошибка 188558)

Связанный bug вкратце говорит, что обработка аннотаций была удалена из инкрементной компиляции Eclipse (возможно, Build automatically???) по законным причинам, И фактически, когда я компилирую свой проект на сервере CI с помощью Ant, аннотации обрабатываются как обычно.

Но я больше не могу запускать свой проект в Eclipse. Это полностью зависит от правильной обработки многострочной аннотации.

До сих пор я пытался отключить флаг Build automatically и вручную создать проект. Нет результата.

Я также попытался перейти к Java Compiler -> Annotation processing -> Factory Path, выбрать банку multiline-string, перейти к Advanced свойствам и снять отметку Run this container processors in batch mode, несмотря на то, что флажок является неконтуитивным (я имею в виду, его следует назвать "Запуск в инкрементном режиме" и по умолчанию не установлен, в соответствии с вышеупомянутой ошибкой)

Приложение представляет собой веб-приложение, поэтому при каждой попытке я пытаюсь развернуть его на локальном Tomcat.

Как вы думаете, что я могу с этим сделать?

4b9b3361

Ответ 1

Несколько предложений:

  • многострочная аннотация, которую вы используете только для поддержки до версии Java версии 1.6. (Например, MultilineProcessor указывает @SupportedSourceVersion(SourceVersion.RELEASE_6), а рекомендуемые настройки pom указывают значения source и target 1.6.) Если ваш пакет создается с помощью JDK Compliance Level более 1,6, вероятно, поэтому аннотации игнорируются.
  • Вместо использования этой аннотации вы можете просто скопировать многострочные строки в свои строковые переменные. Это сделает ваш код менее читаемым, но сборки будут быстрее.