AspectJ iajc编译器在子注释上失败

时间:2015-09-30 12:22:14

标签: java ant aspectj

我使用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);
        }
    }

}

0 个答案:

没有答案