如何使用Ant使用AspectJ构建项目



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

经过一番谷歌搜索,我发现我需要在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);
    }
}

相关内容

  • 没有找到相关文章

最新更新