AspectJ和Map <string,object> Array </string,object>

时间:2014-12-28 05:41:45

标签: aspectj ajdt

我使用的是基于AspectJ 1.81的AJDT 2.2.4。

考虑这个简单的方面:

@Aspect
public class SampleAspect {
    @Before("@annotation(logMe)")
    public void beforeAdvice(JoinPoint joinPoint, LogMe logMe) {
        System.out.println("Before the method");
    }
}

它在LogMe注释之前打印一些文本:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface LogMe {}

现在,我将此注释应用于某些方法:

public class DummyClass {
   @LogMe
    public void doSomething() {
        SampleUtil sampleUtil = new SampleUtil();
        //pass null for simplicity !
        sampleUtil.sampleMethod(null);
        System.out.println("Do Something");
    }
}

SampleUtil是

public class SampleUtil {    
    public void sampleMethod(
        Map<String, Object>[] mapArray){
    }
}

我收到了这个警告:

can not resolve this member: 
void foo.SampleUtil.sampleMethod(java.util.Map[]) [Xlint:unresolvableMember]

如果我将sampleMethod参数更改为Map<String, Object> aMap之类的其他内容,则会出错。

为什么我会收到此警告?!

1 个答案:

答案 0 :(得分:0)

该警告意味着它无法在inpath中找到foo.SampleUtil。 inpath类似于类路径,用于确定编织方面的内容。

我猜测foo.SampleUtil在另一个项目中,这意味着您需要将项目显式添加到您的inpath中。

由于您在Eclipse中使用AJDT,因此可以转到aspect项目的属性页面并选择AspectJ构建路径选项卡。选择Inpath并添加其他项目。