我们的项目正在使用AspectJ。它在Eclipse IDE中工作正常,因为它是Eclipse IDE中的AspectJ项目(在类路径中具有AspectJ Runtime) 但是如果我们使用ant在UNIX中构建项目,它就无法工作。我看过一些文章提到常春藤目标,我正在寻找有关如何配置我的AspectJ项目以使用Ant构建它的更多细节。
答案 0 :(得分: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);
}
}