0

我们的项目正在使用 AspectJ。它在 Eclipse IDE 中运行良好,因为它是 Eclipse IDE 中的 AspectJ 项目(在类路径中有 AspectJ 运行时)但是如果我们使用 ant 在 UNIX 中构建项目,它就不起作用。我看到一些文章提到了 ivy 目标,我正在寻找有关如何配置我的 AspectJ 项目以使用 Ant 构建它的更多详细信息。

4

1 回答 1

0

经过一番谷歌搜索,我发现我需要在 META-INF 下创建 aop.xml 并将 aspectjweaver.jar 添加到 ant build.properties 中的 jvm 选项中。自从我看到方法被拦截以来,这方面似乎很有效。但是我在启动时发现了以下异常:

ERROR org.aspectj.weaver.bcel.BcelWorld - Unable to find class 'Object' in repository java.lang.ClassNotFoundException: Object not found - unable to determine URL at org.aspectj.apache.bcel.util.ClassLoaderRepository.loadClass(ClassLoaderRepository.java:292) ~[aspectjweaver.jar.0:1.7.3] at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:402) [aspectjweaver.jar.0:1.7.3] at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:376) [aspectjweaver.jar.0:1.7.3] ...

我的@Aspect 类如下所示:

@Aspect
public class CaseInsensitiveEqualsAspect {

    @Pointcut("call(boolean equals(Object)) && args(compareString) && target(sourceString) && within(com.sample.package..*)")
    public void equalsPointcut(final Object compareString, final String sourceString) {}


    @Around("equalsPointcut(compareString, sourceString)")
    public Object around(final ProceedingJoinPoint joinPoint, final Object compareString, final String sourceString)
            throws Throwable {
        System.out.println(">>>>>>>>>>>>>>>>Invoking equalsIgnoreCase...");
        return sourceString.equalsIgnoreCase(compareString != null ? compareString.toString() : null);
    }
}
于 2013-08-29T08:30:36.743 回答