我使用的是基于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
之类的其他内容,则会出错。
为什么我会收到此警告?!
答案 0 :(得分:0)
该警告意味着它无法在inpath中找到foo.SampleUtil
。 inpath类似于类路径,用于确定编织方面的内容。
我猜测foo.SampleUtil
在另一个项目中,这意味着您需要将项目显式添加到您的inpath中。
由于您在Eclipse中使用AJDT,因此可以转到aspect项目的属性页面并选择AspectJ构建路径选项卡。选择Inpath并添加其他项目。