简体   繁体   中英

java.lang.VerifyError: JVMVRFY010 multiple jsrs use single return

While using IBM I am getting following error. It is working fine with Oracle. I have my class compiled with Oracle and not IBM.

I an getting this error while calling a class through reflection. Running it through main method works fine.

Class aClass=ObfuscationUtility.class;
        Method[] methods = aClass.getDeclaredMethods();
        for (Method method : methods) {
            if (method.getName().equals(deobfuscated_method)) {
                method.setAccessible(true);
                try {
                    decryptedText = (String) method.invoke(aClass, encryptedText);

....

Any suggestions what mistake I may be doing.

Exception in thread "main" java.lang.VerifyError: JVMVRFY010 multiple jsrs use single return; class=com/ObfuscationUtility, method=<clinit>()V, pc=65
Exception Details:
Location:
com/ObfuscationUtility.<clinit>()V @65: JBjsr
Reason:
Error exists in the bytecode.
Exception Handler Table:
bci [322, 333] => handler: 1146
bci [1147, 1157] => handler: 692
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:396)
at java.lang.ClassLoader.defineClass(ClassLoader.java:357)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:730)
at java.net.URLClassLoader.access$400(URLClassLoader.java:96)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1187)
at java.security.AccessController.doPrivileged(AccessController.java:774)
at java.net.URLClassLoader.findClass(URLClassLoader.java:605)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:942)
at java.lang.ClassLoader.loadClass(ClassLoader.java:887)
at java.lang.ClassLoader.loadClass(ClassLoader.java:870)

Internally, the ASM library is used to perform class bytecode manipulation. One requirement of Java 7 is that it contains a StackMap table to assist with class verification. The version of ASM in use contains a defect that causes the modified class to have an incorrect StackMap table, and this causes a java.lang.VerifyError to occur when loading the class. This can happen when methods in the class make use of multi-dimensional arrays.

Problem conclusion The ASM library has been updated with a fix that correctly generates the StackMap for methods that make use of multi-dimensional arrays.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM