2

我尝试使用http://www.ibm.com/developerworks/java/library/j-jip/构建分析器

在命令提示符下执行时我的一个 java 应用程序

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”开关将验证程序更改回 JDK 6 版本。

于 2012-04-23T13:40:56.310 回答