IBM Support

Liberty, CDI 1.0, and the Oracle JVM's bytecode verification in 8u11 and 7u65

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"}}]

Document Information

Modified date:
17 June 2018

UID

swg27045639