IntelliJのネイティブAspectJで遊んでいる間に、私は奇妙なことに気付きました:対応するポイントカットで使用するクラスのインポートがないと、アドバイスは実行されません。 たとえば、以下のポイントカットを想定していますJavaネイティブAOP | Aspectのインポートが必要です
public pointcut changeObject():
call(void MyObject.change());
アドバイスの実行が、今私がMyObjectにかのimport文を持っているかどうかという事実に依存します。それが存在しない場合は、エラーなしでコンパイルが、私はメッセージを取得: 「警告:(8、0)AJC:このタイプ名の不一致:MyObjectには[Xlint:invalidAbsoluteTypeName]」
In this tutorial彼らは輸入を必要としません(IntelliJもインポートを不要とマークします)。だから問題は何か不思議です。
My setup:IntelliJ Ultimate 2017.1を有効にしてAspectJプラグインを有効にしました。私は AspectJ 1.8.10をインストールし、IDEのコンパイラ設定でAjcコンパイラを参照しました。プロジェクト構造では、 "Modules | Dependencies"のaspectjrt.jarを参照しました。
Intellijがnot the best AspectJ supportを持っているという事実に関連していますか?