Я использую сторонний обработчик аннотации для генерации метаданных (.java-файлов) из аннотированных классов в моем проекте. Я успешно сконфигурировал процессор через Eclipse (Свойства -> Компилятор Java -> Обработка аннотаций), и генерация кода работает нормально (код автоматически создается и генерируется). Кроме того, Eclipse успешно выполняет автоматическое завершение созданных классов и их полей без каких-либо ошибок. Предположим, что у меня есть класс «some.package.Foo» и что сгенерированный класс метаданных «some.package.Foo_». При помощи автоматического завершения, я могу получить следующий код в редакторе Eclipse, без каких-либо ошибок:Eclipse 3.5+ - Обработчик аннотации: Сгенерированные классы не могут быть импортированы
import some.package.Foo_;
...
public class Test {
void test() {
Foo_.someField = null; // try to access a field from the generated class Foo_
}
}
Однако, как только я на самом деле построить проект (или просто сохранить файл, так как сборки автоматически является), я получаю сообщение об ошибке «some.package.Foo_», которое не может быть разрешено. Кажется, что Eclipse генерирует и компилирует some.package.Foo_ в одно и то же время или, что более вероятно.
Я нашел две временные решения (которые практически тормозящие использование процессора аннотаций в первую очередь):
- Перед каждой сборки, которые генерировали классов, щелкните правой кнопкой мыши на каждом сгенерированном файле выберите Свойства и снимите галочку «Производный». После этого я делаю очистку проекта, и импорт в порядке - ошибок больше нет. Однако, если я делаю очистку еще раз, ошибки снова появляются, потому что генерация файлов приводит к тому, что галочка «Производный» будет проверяться снова (автоматически). Так что это действительно раздражает и занимает много времени.
- Я также снимите флажок «Производная» тик от всех этих файлов, и на этот раз я снимите флажок «Производная» галочку из папки источника и пакеты, которые содержат эти файлы. Затем я отключу обработчик аннотации , а затем выполните очистку. Там больше нет ошибок импорта, даже если я еще очистки, но нет никакой выгоды с помощью процессора аннотаций, , потому что, если я что-то изменить , который будет обновлять модель, мне нужно повернуть аннотацию процессор , и повторите эту утомительную процедуру , чтобы отключить ее, после нее сгенерировал новую версию этих файлов.
Это ошибка в Eclipse? Если да, есть ли лучшее обходное решение или быстрое исправление, чем два, о которых я говорил выше? Если нет, то что я должен попытаться решить проблему?
Я также попытался переупорядочить порядок библиотек на пути сборки, и это не поможет.
У нас точно такая же проблема с [AndroidAnnotations] (http://androidannotations.org), происходит случайным образом при открытии Eclipse. Не нашел никакого ясного решения, хотя изменение имени папки обработки комментариев «.apt_generated» вызывает сборку, которая иногда решает проблему. –