AspectJ: VerifyError - PullRequest
       4

AspectJ: VerifyError

4 голосов
/ 27 января 2012

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

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

}

Ответы [ 3 ]

4 голосов
/ 17 февраля 2012

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

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

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

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

2 голосов
/ 03 октября 2013

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

так что оставив это как дополнительный ответ

     -XX:-UseSplitVerifier

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

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

1 голос
/ 26 февраля 2012

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

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

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

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

...