javap still shows class major version 55 after Gen 8.6 BT uses JDK 17, 21 or 25
search cancel

javap still shows class major version 55 after Gen 8.6 BT uses JDK 17, 21 or 25

book

Article ID: 449292

calendar_today

Updated On:

Products

Gen

Issue/Introduction

Have installed the Gen 8.6 Build Tool (BT) PTF BTN86407/LU19622 which provides support for Java JDK versions 17, 21 and 25.
Using the steps in article 218649 Gen 8.6 Build Tool profile JAVA tokens for JDK compiler versions 11, 17, 21, 25 have configured Java/JSK 21 and the build is successful.
However when run javap on the resulting class files still see major version 55 which equates to Java 11 rather than 65 for Java 21 e.g.
"C:\Program Files\Eclipse Adoptium\jdk-21.0.4.7-hotspot\bin\javap" -verbose SVR1.class | findstr major
  major version: 55

Also the file model.ief\java\load_module.xml created for the build shows the Java compiler (javac) being invoked with release="11" e.g.
   <echo message="...Compiling Procedure Step Classes"/>
   <javac srcdir="C:\Users\user1\Documents\CA\Gen 8.6\Models\cstest1.ief\java\"
          destdir="C:\Users\user1\Documents\CA\Gen 8.6\Models\cstest1.ief\java\classes\S1"
          includes="
                    cstest1\SVR1.java,
                    cstest1\SVR1_OA.java,
                    cstest1\SVR1_LA.java,
                    cstest1\package-info.java
                    cstest1\SVR2_OA.java,
         "
         debug="on"
         encoding="UTF-8"
         release="11"
         includeantruntime="false"
         classpathref="classpath.base" />

Environment

Gen 8.6 Java applications building with Java/JDK versions 17, 21 or 25.

Resolution

The BT script changes in PTF BTN86407 provide the ability to use a later Java compiler than version 11 but for such versions the Java compiler (javac) is always invoked with release="11" to build byte code that targets Java 11.
The reason this was done is to support existing Gen 8.6 Java Runtimes that were built with Java 11.