Changes in ClassLoader behavior

In Adaptive Server version 15.0.3 and later, ClassLoader behavior conforms to JVM specifications for the verification of classes during loading.

In Adaptive Server version 15.0.2 and earlier, references to additional classes within the class being loaded were checked but not fully resolved. For example, if class A referred to class B within a method, the ClassLoader did not check that class B was actually available. Thus, a class could successfully load without satisfying all of its dependencies. An exception would be raised only when the method that requiring the unsatisfied dependency was encountered.

The ClassLoader for all commercial JVM implementations performs the full class verification when the initial class is loaded. As a result, a class with unsatisfied dependencies does not load, an Unhandled Java Exception is raised, and the Java stack trace lists the error as “java.lang.NoClassDefFoundError.”

This means that, in rare instances, a class that loads successfully in Adaptive Server 15.0.2 and earlier may not load in Adaptive Server 15.0.3 and later unless a full set of user and Java-supplied classes is provided so that all dependencies can be satisfied.