Java本机AOP |需要在方面中导入

Java本机AOP |需要在方面中导入,java,intellij-idea,aop,Java,Intellij Idea,Aop,在IntelliJ中使用本机AspectJ时,我注意到了一件奇怪的事情:如果我没有在相应的切入点中使用的类的导入,则不会执行通知。 例如,假设以下切入点: public pointcut changeObject(): call(void MyObject.change()); 建议的执行现在取决于我是否有MyObject的导入语句。如果不存在,则编译时不会出现错误,但我收到消息: 警告:(8,0)ajc:与此类型名称不匹配:MyObject[Xlint:InvalidaBSo

在IntelliJ中使用本机AspectJ时,我注意到了一件奇怪的事情:如果我没有在相应的切入点中使用的类的导入,则不会执行通知。 例如,假设以下切入点:

public pointcut changeObject():
        call(void MyObject.change());
建议的执行现在取决于我是否有MyObject的导入语句。如果不存在,则编译时不会出现错误,但我收到消息: 警告:(8,0)ajc:与此类型名称不匹配:MyObject[Xlint:InvalidaBSolutionPename]

它们不需要导入(IntelliJ也将导入标记为不必要)。所以我想知道问题是什么

我的设置:IntelliJ Ultimate 2017.1,支持AspectJ插件。我安装了 AspectJ 1.8.10,并在IDE的编译器设置中引用了Ajc编译器。在项目结构中,我在“模块|依赖项”中引用了aspectjrt.jar


我是否遗漏了任何东西,或者可能与Intellij有关联?

在eclipse中使用AOP插件测试了这种情况后,我找到了一个答案:导入切入点和通知中使用的类是必要的

目前,IntelliJ确实没有很好的(本机)AOP支持,因为1)它不建议导入在切入点中使用的类,而是2)表示它们未使用(并在优化导入时实际删除它们)。此外,eclipse还显示了IntelliJ没有显示的“此类型名称不匹配”警告。最后,它在突出显示已通知的代码部分方面也具有优势