2012-04-20 32 views
2

我試圖建立使用http://www.ibm.com/developerworks/java/library/j-jip/錯誤,而使用Java代理

我的一個Java應用程序的探查時在命令提示符下執行

java -jar abc.jar 

給出所需的輸出,但使用javaagent當個人資料相同應用程序提供了錯誤

​​

提供了以下錯誤

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應用程序。

+0

您使用什麼JDK版本來構建分析器和應用程序? – mazaneicha 2012-04-20 12:20:43

+0

我使用JDK 1.6版本 – Raj 2012-04-20 12:25:08

+0

請查看這篇文章,看看是否有任何適用於您的情況:http://stackoverflow.com/questions/100107/reasons-of-getting-a-java-lang-verifyerror – mazaneicha 2012-04-20 13:23:29

回答

4

您確定您在JDK6上運行您的目標JVM嗎? JDK 7收緊了在堆棧映射框架上執行的檢查,當字節碼被不知道這些更改的工具修改了字節碼時,可能會導致VerifyError異常。

仔細檢查目標JVM,如果你發現你正在使用JDK 7,你可以切換到JDK 6或使用「-XX:-UseSplitVerifier」開關來改變驗證返回JDK 6版本。

+0

如何使用「-XX:-UseSplitVerifier」 – Raj 2012-04-24 12:11:51

+0

「java -XX:-UseSplitVerifier -jar abc.jar」應該可以工作。 – 2012-04-24 20:03:55