Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Aspectj声明错误无法正常工作_Java_Aspectj_Pointcut - Fatal编程技术网

Java Aspectj声明错误无法正常工作

Java Aspectj声明错误无法正常工作,java,aspectj,pointcut,Java,Aspectj,Pointcut,我试图捕获一个方法签名更改,并在它发生时抛出一个错误。 但是declare错误没有按预期工作 @DeclareError("call(* a.b.C.method(..)) && !call(* a.b.C.method(int))") public static final String errorMsg= "Signature error"; 这始终与对此方法的调用相匹配 但是如果我将这个切入点移动到@Before,那么除非方法签名发生了更改,否则它将不匹配 你知道为什么@

我试图捕获一个方法签名更改,并在它发生时抛出一个错误。 但是declare错误没有按预期工作

@DeclareError("call(* a.b.C.method(..)) && !call(* a.b.C.method(int))")
public static final String errorMsg= "Signature error";
这始终与对此方法的调用相匹配

但是如果我将这个切入点移动到@Before,那么除非方法签名发生了更改,否则它将不匹配

你知道为什么@DeclareError和@Before在切入点方面有不同的行为吗


谢谢

奇怪-它在我的环境中工作。(带有AspectJ插件的Eclipse)

如果我执行以下操作,则在编译时给我一个错误:

a.b.C c = new a.b.C();
c.method(new Integer(2)); <--- no Error
c.method(2); <--- no Error
c.method("test"); <--- Error

=============================

ErrorDescription    Resource    Path    Location    Type
"Signature error"   Main.java   /Stackoverflow/src/test line 12 AspectJ Problem
a.b.C=新的a.b.C();

c、 方法(新整数(2));你是对的。我测试了这个简单的测试用例&它工作得很好。但是,当使用复杂对象作为参数而不是字符串和int时,它总是匹配的。我的方法签名是这样的(MyObject,boolean,String,MyObject1,MyObject2,MyObject3,MyObject3),我发现了这个问题。我必须指定对象的完整类名,它才能工作。(a.b.MyObject,boolean,String,a.b.MyObject 1,a.b.MyObject 2,a.b.MyObject 3,a.b.MyObject 3)感谢您的帮助Fred。如果使用@AspectJ编码样式,则需要完整的类名。如果您使用本机语法,则不需要这样做,因为您可以像往常一样导入Java中使用的所有类。
a.b.C c = new a.b.C();
c.method(new Integer(2)); <--- no Error
c.method(2); <--- no Error
c.method("test"); <--- Error

=============================

ErrorDescription    Resource    Path    Location    Type
"Signature error"   Main.java   /Stackoverflow/src/test line 12 AspectJ Problem