Details
-
Sub-task
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
1.9.0
Description
The method Unsafe.defineClass() is removed in Java 11.
To support Java 11, we need to rework the method CommonTestUtils.createClassNotInClassPath() to use a different mechanism.
Java 11 introduces a new way to define a class from byte code via MethodHandles. However, because these do not exist in Java 8, we cannot use them if we want to keep supporting Java 8, which we most likely want to do for quite a while.
A method that works across both versions is to write the class byte code out to a temporary file and create a new URLClassLoader that loads the class from that file.
That solution is not a complete drop-in replacement, because it cannot add the class to an existing class loader, but can only create a new pair of (classloader & new-class-in-that-classloader). But it is seems straightforward to adjust the existing tests to work with that.
Attachments
Issue Links
- relates to
-
FLINK-13460 Rework SerializedThrowableTest to not use Unsafe.defineClass()
- Closed
- links to