Release Notes
Abstract
Liberty, CDI 1.0, and the Oracle JVM's bytecode verification in 8u11 and 7u65
Content
A change in Oracle's release of Java 8 update 11 and 7 update 65 has impacted the Liberty CDI 1.0 feature.
The problem occurs in the JVM's bytecode verification starting with Java 8u11 and 7u65.
You may see an error similar to either of the following:
- java.lang.VerifyError: Bad <init> method call from inside of a branch
- java.lang.VerifyError: (class: xxxx) Illegal use of nonvirtual function call
The Java language requires any call to a superclass constructor to be the first action undertaken by a constructor. This was not enforced by the bytecode verifier in earlier versions of Java 8. Oracle's decision to begin firmer enforcement of this language feature closed a language specification bug, but it impacts many tools.
The workaround for this issue is to use the -noverify switch.
Liberty has implemented this workaround as of 8.5.5.5, by adding the -noverify switch to the jvm.options file when CDI 1.0 feature is running on Oracle 8 update 11 or 7 update 65.
Known JVM versions with this problem:
1.7.0 update 65
1.7.0 update 67
1.8.0 update 11
1.8.0 update 20
The problem was not seen in earlier JVM updates.
[{"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Java SDK","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF014","label":"iOS"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"},{"code":"PF035","label":"z\/OS"}],"Version":"8.5.5.5","Edition":"Liberty","Line of Business":{"code":"LOB45","label":"Automation"}}]
Was this topic helpful?
Document Information
Modified date:
17 June 2018
UID
swg27045639