Я использую macroparadise для создания методов и классов случаев в моем проекте (сами макросы определены в отдельном проекте от моих основных файлов, где я их использую).
Все компилируется и работает, как и ожидалось, но Eclipse не может разрешить переменные и методы, сгенерированные моими макросами. Однако, когда я закрываю и снова открываю Eclipse, он отлично все идентифицирует; Я могу навести курсор на классы и методы и получить правильную информацию. Но как только я что-то меняю или даже просто закрываю и снова открываю файл, ссылающийся на методы генерации, Eclipse подчеркивает все сгенерированные переменные и методы и сообщает мне «не найдено: значение {имя}» (где {имя} — это имя переменной ).
Обновление
Я изолировал поведение от следующих случаев:
- Я начинаю с аннотированного объекта A в одном файле и объекта B, использующего A.hello, в другом файле.
- Я компилирую файл A, который добавляет метод «hello» к объекту A.
- Все работает нормально, пока (!) я снова не открываю файл, содержащий объект A.
Вопрос: Что делает Eclipse, когда я открываю файл? Пытается ли он переиндексировать класс на основе записанного файла, а не скомпилированного?
Завершить обновление
Как Eclipse разрешает переменные? Он просматривает файлы классов в моей цели/папке? У меня есть файлы *.class для всего моего сгенерированного кода, поэтому, если Eclipse просматривает их, эти переменные должны действительно существовать.
Кто-нибудь заставил Eclipse правильно разрешить эти переменные? Я попробовал IntelliJ IDEA, но IDEA ничего не может решить с помощью неявных преобразований и макросов (я безуспешно следовал указаниям, которые нашел в Интернете).
Информация:
Eclipse IDE для разработчиков Java
Версия: Oxygen Release (4.7.0)
Идентификатор сборки: 20170620-1800
Подключаемый модуль Scala
scala-ide.org
4.4.1.v-2_11-201605041057-92a3ed3
org.scala-ide.sdt.feature
Плагин компилятора:
macroparadise
org.scalamacros
Paradise_2.11.8
версия 2.1.0