我使用ant 1.9.3和aspectjtools 1.8.5。当我尝试使用带有消息
的iajc编译器failes编译项目时[aspectj:iajc] error at @NamedQueries({
[aspectj:iajc] ^^^^^^^^^^^
[aspectj:iajc] /path/to/file/Speech.java:14:0::0 Speech.NamedQueries is not an annotation type
[aspectj:iajc] warning at /path/to/file/PermissionCheckerAspect.java:23::0 advice defined in package.PermissionCheckerAspect has not been applied [Xlint:adviceDidNotMatch]
[aspectj:iajc] MessageHolder: (10732 info) (2 warning) (1 error)
[aspectj:iajc] [error 0]: error at @NamedQueries({
[aspectj:iajc] ^^^^^^^^^^^
[aspectj:iajc] /path/to/file/Speech.java:14:0::0 Speech.NamedQueries is not an annotation type
我的ant目标配置类似于此代码段
<target name="compile.aspectj" depends="copy-libs">
<aspectj:iajc source="1.8" destDir="war/WEB-INF/classes">
<sourceroots>
<pathelement location="src"/>
</sourceroots>
<classpath refid="project.class.path"/>
</aspectj:iajc>
</target>
我必须使用编译时编织。我该如何处理?
这是我的方面代码
@Aspect
public class PermissionCheckerAspect {
private static final Logger log = LoggerFactory.getLogger(PermissionCheckerAspect.class);
public PermissionCheckerAspect() {
info("Instantiating PermissionChecker aspect");
}
@Around("execution(public * *(..)) && within(package.LicenseRequired)")
public Object around(ProceedingJoinPoint joinPoint) {
try {
info("Proceeding...");
Object proceed = joinPoint.proceed();
info("Proceeded successfully");
return proceed;
} catch (Throwable throwable) {
throw new RuntimeException(throwable);
}
}
}