【发布时间】:2022-02-07 10:08:33
【问题描述】:
我正在尝试扩展包含 AspectJ 建议的 abstract class。我的实现很简单:
@Aspect
public class XRayInterceptor extends BaseAbstractXRayInterceptor {
@Pointcut("execution(public * *(..))")
private void publicMethods() {}
@Pointcut("@within(com.amazonaws.xray.spring.aop.XRayEnabled)")
private void xrayAnnotatedClass() {}
@Pointcut("xrayAnnotatedClass() && publicMethods()")
protected void xrayEnabledClasses() {}
}
不幸的是,编译时我从iajc 收到以下错误(添加了换行符):
[iajc] [error 0]:
error at com/amazonaws/xray/spring/aop/BaseAbstractXRayInterceptor.java::0
can't find referenced pointcut xrayEnabledClasses
我不明白为什么它抱怨 BaseAbstractXRayInterceptor 是一个抽象类并且没有被直接使用。
现在我只是简单地复制了抽象类,使其具体化并添加了上面的切入点来让我畅通无阻。
有什么想法吗?谢谢!
【问题讨论】:
-
问一个关于基类中的错误消息的问题并不是那么有帮助,你在这里对我们隐藏了。请了解MCVE 是什么以及它如何通过使您的问题可重现来帮助您获得有用的答案。你的孩子方面对我来说看起来不错,但我需要看到全貌。我也想知道你的 AspectJ 版本,如果你使用 CTW 或 LTW,甚至可能是 Spring AOP 而根本不使用 AspectJ。
-
我会在 4 天后收到一些反馈。我的回答应该已经解释了你的情况出了什么问题,即使我只有很少的信息可以使用,并且不得不尝试从你的代码和错误日志中提取信息,比如 Sherlock Holmes。如果您不理解我的解释,请接受并支持我的回答或在评论中提出后续问题。谢谢。
-
感谢您对问题的反馈。以供将来参考,是否提供指向直接指向被视为“隐藏”的类的 github 存储库的链接?我是否更喜欢复制整个基类?
-
您可以发布一个完整的方面类与导入。您还可以提到基类所在的依赖项 Maven 或 Gradle 坐标。在这种情况下,我自己找到了它,正如您在我的回答中看到的那样,因为我从错误消息中推断出它并在网上搜索它以便更好地了解情况。但实际上我的工作不是搜索您已经拥有的信息,并且可以轻松地在您的问题中提供作为上下文的信息。但是不,如果您告诉我在哪里可以找到它,则无需在此处粘贴公开可用的 3rd 方类。 ??????
-
这个问题仍然被列为未接受,尽管我认为我正确地回答了它并且也发表了广泛的评论。请问您还等什么?