2012-01-26 4 views
4

Я экспериментирую с аспектно-ориентированным программированием. Я установил AspectJ-Plugin в Eclipse и выполнил все шаги, упомянутые в этом tutorial.
Все соединения между созданными аспектами работы, но когда я пытаюсь запустить проект, я получаю следующее исключение:AspectJ: VerifyError

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» в консоли.


Вот классы I, созданные во время урока:

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!"); 
    } 

} 

ответ

1

Я также следовал за учебником и столкнулся с той же ошибкой. И вот как я это решил.

Я выяснил, что среда выполнения JRE, выбранная по умолчанию с моим eclipse, JavaSE-1.7, имела проблему с AspectJ. Итак, что вам нужно сделать, это изменить среду исполнения JRE, выбрать, например, JavaSE-1.6.

После этого вы можете следовать руководству и получить желаемый результат! :)

Надеюсь, это поможет!

4

проблема не кажется связанной к АОП.

Я думаю, что это то же самое затмение ошибка описана здесь: https://bugs.eclipse.org/bugs/show_bug.cgi?id=362591

Ayushman Jain 2011-11-02 2:47:32 сказал: Если вы застряли, пожалуйста, используйте аргумент VM - XX: -UseSplitVerifier для запуска программы . Я подтверждаю, что с этой опцией нет ошибки проверки.

Возможно, вы также попробуете загрузить последнюю версию eclipse.

2

У меня нет точки комментировать @KC ответ, который работал для меня,

поэтому, оставляя это как дополнительный ответ

 -XX:-UseSplitVerifier 

сделал работу для меня

I у меня есть проект AspectJ, который отлично работает в eclipse 3.7 , а затем вдруг начал получать эту ошибку , добавив в конфигурацию запуска -XX: -UseSplitVerifier ее решение.