2012-01-26 1 views
4

私はアスペクト指向プログラミングを試しています。 EclipseにAspectJ-Pluginをインストールし、このtutorialに記載されているすべての手順を実行しました。作成された側面との間に
すべての接続は動作しますが、私はプロジェクトを実行しようとすると、私は次の例外受け取る:私はWorld.ajクラスを空にして、プロジェクトを実行すると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) 

を、すべてが動作し、私はコンソールに期待される "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!"); 
    } 

} 

答えて

1

私もチュートリアルに続き、同じエラーが発生しました。そして、私はそれをどのように解決したのですか?

私の日食JavaSE-1.7でデフォルトで選択された実行環境JREは、AspectJに問題があることがわかりました。ですから、実行環境JREを変更して、たとえばJavaSE-1.6を選択する必要があります。

その後、チュートリアルに従い、目的の出力を得ることができます。 :)

これが役に立ちます。

4

問題が関連していないようですAOPに

私はこれは、ここで説明したのと同じEclipseのバグだと思う

https://bugs.eclipse.org/bugs/show_bug.cgi?id=362591

Ayushmanジャイナ2011-11-02 2時47分32秒は言った: あなたが立ち往生している場合は、VMの引数を使用してください - XX:-UseSplitVerifierを実行して プログラムを実行します。私は、このオプションで検証エラーがないことを確認します。

また、最新版のeclipseをダウンロードすることもできます。

2

私は、私のために働い@KCの答え、にコメントを

をポイントを持っていないので、私は私のため

を仕事をした

 -XX:-UseSplitVerifier 

追加答えとしてこれを残します3.7からを突然起動していたAspectJプロジェクトがあります。 ランチャー設定に-XX:-UseSplitVerifierを追加すると、それが解決されました。