我正在尝试面向方面的编程。我已经在Eclipse中安装了AspectJ-插件,并遵循了这个教程中提到的所有步骤。
创建的方面之间的所有连接都可以工作,但是当我尝试运行项目时,我会收到以下异常:
HelloException in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 6 in method helloworld.World.<clinit>()V at offset 0
at helloworld.Hello.sayHello(Hello.java:11)
at helloworld.Hello.main(Hello.java:6)当我清空类World.aj并运行该项目时,一切正常,并且在控制台中收到预期的"Hello“。
下面是我在本教程中创建的类:
Hello.java
package helloworld;
public class Hello {
public static void main(String[] args) {
sayHello();
}
public static void sayHello() {
System.out.print("Hello");
}
}World.aj
package helloworld;
public aspect World {
pointcut greeting() : execution(* Hello.sayHello(..));
after() returning() : greeting() {
System.out.println(" World!");
}
}发布于 2012-02-26 03:04:15
我还遵循了教程,并遇到了同样的错误。我就是这样解决这个问题的。
我发现,默认情况下使用eclipse ( JavaSE-1.7 )选择的JRE执行环境与AspectJ有问题。因此,您必须做的是更改执行环境JRE,例如选择JavaSE-1.6。
之后,您可以遵循本教程,并获得所需的输出!:)
希望这能有所帮助!
发布于 2012-02-17 09:31:53
这个问题似乎与AOP无关。
我认为这就是这里描述的eclipse:bug.cgi?id=362591
Ayushman 2011-11-02 :47:32说:如果你卡住了,请使用VM参数-XX:-UseSplitVerifier运行程序。我确认此选项没有验证错误。
您也可以尝试下载eclipse的最新版本。
发布于 2013-10-03 04:44:27
我对@KC的回答没有什么意见,这对我来说很管用,
所以把这个作为一个额外的答案
-XX:-UseSplitVerifier为我工作过
我有一个在Eclipse3.7中运行良好的AspectJ项目,然后突然开始错误,将-XX:-UseSplitVerifier添加到启动程序配置中,解决了这个问题。
https://stackoverflow.com/questions/9027009
复制相似问题