Details
-
Support Patch
-
Resolution: Obsolete
-
Major
-
EAP_EWP 5.2.0
-
None
-
None
Description
EAP 5.2.0 ships with javassist 3.12.0 which is not compatible with Java 7.
The following exception is thrown
ava.lang.VerifyError: Expecting a stackmap frame at branch target 14 in method framework.business.ModelEntity.$javassist_read_oid()Ljava/lang/Long; at offset 10
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
at java.lang.Class.getDeclaredMethods(Class.java:1845)
at org.hibernate.property.BasicPropertyAccessor.getterMethod(BasicPropertyAccessor.java:340)
at org.hibernate.property.BasicPropertyAccessor.getGetterOrNull(BasicPropertyAccessor.java:320)
at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:303)
at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:298)
at org.hibernate.util.ReflectHelper.getter(ReflectHelper.java:238)
at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:229)
The only workaround is to use -XX:-UseSplitVerifier
Root Cause:
When run under Java 7, javassist reads the bytecode, tags it as Java 7 bytecode, performs changes in Java 6 mode and then saves the results still tagged in Java 7 mode.
The JVM in JDK 7 sees Java 7 bytecode and activates the new Java 7 verifier, which fails with error "java.lang.VerifyError: Expecting a stackmap frame at branch target" when it meets the bytecode manipulated in Java 6 mode.