Я использую aspectJ для внедрения реализации интерфейса.
Eclipse компилирует все просто отлично.
Однако проект также должен быть построен с использованием муравья.
Задача iajc не выполняется с:
«Тип Foo должен реализовывать унаследованный абстрактный метод Bar.doThings ()»
где Bar - интерфейс, который имеет реализацию типа (ITD).
код выглядит следующим образом (в соответствующих файлах):
class Foo extends BaseFoo {...}
abstract class BaseFoo implements Bar {...}
interface Bar{
void doThings{}
public static aspect Implementation {
void Bar.doThings() {
//whatever
}
}
}
В ткацких сообщениях показан класс BaseFoo, имеющий метод doThings()
intertyped
но Фу нет.
и, следовательно, завершается с ошибкой «необходимо реализовать ...».
Я вполне уверен, что у меня есть подобные ситуации, работающие правильно в моем common.jar.
Это происходит, когда я компилирую другой модуль, в котором определен Bar и реализован ITD / в common.jar. Common.jar указан правильно в <iajc .... aspectPathRef..>
, иначе BaseFoo
не был бы напечатан.
Похоже, что компилятор не видит реализацию, унаследованную от базового класса, в котором она была переписана.
Вот как выглядит iajc:
<iajc destdir="${build.dir}" sourceroots="${javasrc.dir}"`
source="1.6"
classpathref="classpath"
Xlint="warnings"
aspectPathRef="aspectlib"
showWeaveInfo="true" />
где aspectlib включает apsectjrt.jar и мой common.jar
и еще одна вещь: проект eclipse, который выполняет компиляцию и запуск, не делится на общий и другие модули - все каталоги src просто импортируются в один агрегатный проект.
Так что, пожалуйста - что здесь не так?