From 3a3e7c59192f6d192377783919c077e5eb7c9838 Mon Sep 17 00:00:00 2001 From: Jiri Date: Sat, 10 Jul 2021 11:07:29 +0200 Subject: [PATCH] Replaced getUnsafeInstance.defineClass by MethodHandles.privateLookupIn getUnsafeInstance().defineClass was removed in jdk11 in favour of MethodHandles.privateLookupIn MethodHandles.privateLookupIn are nto available in jdk8 --- .../com/strobel/reflection/emit/TypeBuilder.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Procyon.Reflection/src/main/java/com/strobel/reflection/emit/TypeBuilder.java b/Procyon.Reflection/src/main/java/com/strobel/reflection/emit/TypeBuilder.java index 35dd38fd..08478dff 100644 --- a/Procyon.Reflection/src/main/java/com/strobel/reflection/emit/TypeBuilder.java +++ b/Procyon.Reflection/src/main/java/com/strobel/reflection/emit/TypeBuilder.java @@ -34,6 +34,7 @@ import java.io.IOException; import java.io.OutputStream; import java.lang.annotation.Annotation; +import java.lang.invoke.MethodHandles; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.security.ProtectionDomain; @@ -1231,14 +1232,10 @@ else if (!genericParameterBuilders.isEmpty()) { _hasBeenCreated = true; - _generatedClass = (Class) getUnsafeInstance().defineClass( - fullName, - classBytes, - 0, - classBytes.length, - Thread.currentThread().getContextClassLoader(), - _protectionDomain - ); + MethodHandles.Lookup lookup = MethodHandles.lookup(); + MethodHandles.Lookup privateLookup = MethodHandles.privateLookupIn(Class.forName(fullName), lookup); + _generatedClass = (Class)privateLookup.defineClass(classBytes); + RuntimeHelpers.ensureClassInitialized(_generatedClass);