2013-09-19 4 views
1

Мотивация:Compile времени созданный класс показан как несуществующие в IntelliJ

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


Текущее состояние:

У меня нет:

  • аннотаций
  • аннотацию процессор
  • A .jar, содержащий оба этих файла и файл javax.annotation.processing.Processor, содержащий FQCN o е мой процессор в META-INF/услуги

Что должно произойти:

  • Он должен автоопределение процессор
  • Он должен обрабатывать аннотацию и создать новый класс (WiredAnnotated)
  • I должен быть в состоянии использовать этот класс за один шаг компиляции (не многократные фазы)
  • Я не хочу, чтобы редактор, чтобы принять этот класс, генерируется (например, AndroidAnnotations управляет этим, а)

Что происходит на самом деле:

  • Он автоматически определяет процессор
  • Это создает новый класс (в из/производства/*/генерироваться /)
  • Я возможность использовать этот класс
    • исходный код выглядит правильно
    • Когда декомпиляции его выглядит слишком хорошо
  • Редактор может не разрешить класс (см скриншот)

Что я пробовал:

  • Перезапуск IntelliJ
  • основание недействительности кэши
  • Проверка на выходе из обработчик аннотации

Скриншот:

enter image description here

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

У кого-нибудь есть идея/подсказка о том, что я делаю неправильно?Мне не хватало информации, которая могла бы помочь вам помочь?

Спасибо заранее, до

+0

@vikingsteve: Отредактированный вопрос, пожалуйста, посмотрите еще раз. – tilpner

+0

Спасибо, вопрос очень ясен, но это намного выше моего уровня оплаты :) – vikingsteve

ответ

0

Ну, вам нужно добавить вам out/production/*/generated/ в исходной папке проекта. Итак, IntelliJ узнает о ваших сгенерированных классах.

Вы можете сделать это с помощью правой кнопки мыши по каталогу> Отметить каталог как исходный корень.

или

Структура проекта (F4)> Модули> вкладка Sources> Исходные папки должны содержать все каталоги с вашими исходными кодами, генерируется один inludes.

В андроиде есть корневая папка gen, но заметьте, она светится синим или зеленым цветом, что означает, что она помечена как исходная папка, она также видна в структуре проекта> Модули. Он содержит R, BuildConfig и Manifest.

+0

Конечно, я пробовал это, но мне также нужно было снять еще одну опцию, чтобы * unexclude * build-output-folders. Но все, что имеет значение, это: ** Это работает **! – tilpner