Package javassist.util.proxy
Class DefineClassHelper
- java.lang.Object
-
- javassist.util.proxy.DefineClassHelper
-
public class DefineClassHelper extends Object
Helper class for invokingClassLoader.defineClass(String,byte[],int,int).- Since:
- 3.22
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Class<?>toClass(Class<?> neighbor, byte[] bcode)Loads a class file byjava.lang.invoke.MethodHandles.Lookup.static Class<?>toClass(MethodHandles.Lookup lookup, byte[] bcode)Loads a class file byjava.lang.invoke.MethodHandles.Lookup.static Class<?>toClass(String className, Class<?> neighbor, ClassLoader loader, ProtectionDomain domain, byte[] bcode)Loads a class file by a given class loader.
-
-
-
Method Detail
-
toClass
public static Class<?> toClass(String className, Class<?> neighbor, ClassLoader loader, ProtectionDomain domain, byte[] bcode) throws CannotCompileException
Loads a class file by a given class loader.This first tries to use
java.lang.invoke.MethodHandleto load a class. Otherwise, or ifneighboris null, this tries to usesun.misc.Unsafeto load a class. Then it tries to use aprotectedmethod injava.lang.ClassLoaderviaPrivilegedAction. 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-UNNAMEDmust be given to the JVM. If this JVM argument cannot be given,toPublicClass(String,byte[])should be used instead.- Parameters:
className- the name of the loaded class.neighbor- the class contained in the same package as the loaded class.loader- the class loader. It can be null ifneighboris not null and the JVM is Java 11 or later.domain- if it is null, a default domain is used.bcode- the bytecode for the loaded class.- Throws:
CannotCompileException- Since:
- 3.22
-
toClass
public static Class<?> toClass(Class<?> neighbor, byte[] bcode) throws CannotCompileException
Loads a class file byjava.lang.invoke.MethodHandles.Lookup. It is obtained by usingneighbor.- Parameters:
neighbor- a class belonging to the same package that the loaded class belogns to.bcode- the bytecode.- Throws:
CannotCompileException- Since:
- 3.24
-
toClass
public static Class<?> toClass(MethodHandles.Lookup lookup, byte[] bcode) throws CannotCompileException
Loads a class file byjava.lang.invoke.MethodHandles.Lookup. It can be obtained byMethodHandles.lookup()called from somewhere in the package that the loaded class belongs to.- Parameters:
bcode- the bytecode.- Throws:
CannotCompileException- Since:
- 3.24
-
-