public class DefineClassHelper
extends java.lang.Object
ClassLoader.defineClass(String,byte[],int,int)
.Modifier and Type | Method | Description |
---|---|---|
static java.lang.Class<?> |
toClass(java.lang.String className,
java.lang.ClassLoader loader,
java.security.ProtectionDomain domain,
byte[] bcode) |
Loads a class file by a given class loader.
|
public static java.lang.Class<?> toClass(java.lang.String className, java.lang.ClassLoader loader, java.security.ProtectionDomain domain, byte[] bcode) throws CannotCompileException
This first tries to use sun.misc.Unsafe
to load a class.
Then it tries to use a protected
method in java.lang.ClassLoader
via PrivilegedAction
. Since the latter approach is not available
any longer by default in Java 9 or later, the JVM argument
--add-opens java.base/java.lang=ALL-UNNAMED
must be given to the JVM.
If this JVM argument cannot be given, toPublicClass(String,byte[])
should be used instead.
domain
- if it is null, a default domain is used.CannotCompileException
Javassist, a Java-bytecode translator toolkit.
Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.