Работа с обработчиками аннотаций в 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.
Как вы думаете, что я могу с этим сделать?
Ответы
Ответ 1
Несколько предложений:
- многострочная аннотация, которую вы используете только для поддержки до версии Java версии 1.6. (Например,
MultilineProcessor
указывает @SupportedSourceVersion(SourceVersion.RELEASE_6)
, а рекомендуемые настройки pom указывают значения source
и target
1.6
.) Если ваш пакет создается с помощью JDK Compliance Level более 1,6, вероятно, поэтому аннотации игнорируются.
- Вместо использования этой аннотации вы можете просто скопировать многострочные строки в свои строковые переменные. Это сделает ваш код менее читаемым, но сборки будут быстрее.