2

http://www.ibm.com/developerworks/java/library/j-jip/を使用してプロファイラーを作成しようとしました

コマンドプロンプトで実行したときの私のJavaアプリケーションの1つ

java -jar abc.jar 

必要な出力を提供しますが、javaagentを使用して同じアプリケーションをプロファイリングすると、エラーが発生します

java -javaagent:profiler.jar -jar abc.jar 

次のエラーが発生します

Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at
branch target 20 in method 
()V at offset 12
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

ただし、上記のjavaagentメソッドで正常に実行されているswingアプリケーションもいくつかあります。

4

1 に答える 1

4

JDK6でターゲットJVMを実行していることを確認しますか?JDK 7は、スタックマップフレームで実行されるチェックを強化しました。これにより、バイトコードがこれらの変更を認識しないツールによって変更された場合に、このようなVerifyError例外が発生する可能性があります。

ターゲットJVMを再確認し、JDK 7を使用している場合は、JDK 6に切り替えるか、「-XX:-UseSplitVerifier」スイッチを使用してベリファイアをJDK6バージョンに戻すことができます。

于 2012-04-23T13:40:56.310 に答える