Top Description Inners Fields Constructors Methods
javassist.util.proxy

public Class DefineClassHelper

extends Object
Class Inheritance
Imports
java.lang.invoke.MethodHandle, .MethodHandles, .MethodHandles.Lookup, java.lang.reflect.Method, java.security.ProtectionDomain, java.util.List, javassist.CannotCompileException, javassist.bytecode.ClassFile

Helper class for invoking ClassLoader#defineClass(String, byte[], int, int).
Since
3.22

Nested and Inner Type Summary

Modifier and TypeClass and Description
private abstract static class
private static class
private static class
private static class
private static class

Field Summary

Modifier and TypeField and Description
private static final DefineClassHelper.Helper

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static Class<?>
toClass(String
the name of the loaded class.
className
,
Class<?>
the class contained in the same package as the loaded class.
neighbor
,
ClassLoader
the class loader. It can be null if neighbor is not null and the JVM is Java 11 or later.
loader
,
ProtectionDomain
if it is null, a default domain is used.
domain
,
byte[]
the bytecode for the loaded class.
bcode
)

Loads a class file by a given class loader.

public static Class<?>
toClass(Class<?>
a class belonging to the same package that the loaded class belogns to.
neighbor
,
byte[]
the bytecode.
bcode
)

Loads a class file by java.lang.invoke.MethodHandles.Lookup.

public static Class<?>
toClass(MethodHandles.Lookup lookup, byte[]
the bytecode.
bcode
)

Loads a class file by java.lang.invoke.MethodHandles.Lookup.

pack-priv static Class<?>
toPublicClass(String className, byte[] bcode)

Loads a class file by java.lang.invoke.MethodHandles.Lookup.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

privilegedback to summary
private static final DefineClassHelper.Helper privileged

Constructor Detail

DefineClassHelperback to summary
private DefineClassHelper()

Method Detail

toClassback to summary
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.MethodHandle to load a class. Otherwise, or if neighbor is null, this 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.

Parameters
className:String

the name of the loaded class.

neighbor:Class<?>

the class contained in the same package as the loaded class.

loader:ClassLoader

the class loader. It can be null if neighbor is not null and the JVM is Java 11 or later.

domain:ProtectionDomain

if it is null, a default domain is used.

bcode:byte[]

the bytecode for the loaded class.

Since
3.22
toClassback to summary
public static Class<?> toClass(Class<?> neighbor, byte[] bcode) throws CannotCompileException

Loads a class file by java.lang.invoke.MethodHandles.Lookup. It is obtained by using neighbor.

Parameters
neighbor:Class<?>

a class belonging to the same package that the loaded class belogns to.

bcode:byte[]

the bytecode.

Since
3.24
toClassback to summary
public static Class<?> toClass(MethodHandles.Lookup lookup, byte[] bcode) throws CannotCompileException

Loads a class file by java.lang.invoke.MethodHandles.Lookup. It can be obtained by MethodHandles.lookup() called from somewhere in the package that the loaded class belongs to.

Parameters
bcode:byte[]

the bytecode.

Since
3.24
toPublicClassback to summary
pack-priv static Class<?> toPublicClass(String className, byte[] bcode) throws CannotCompileException

Loads a class file by java.lang.invoke.MethodHandles.Lookup.

Since
3.22
javassist.util.proxy back to summary

private abstract Class DefineClassHelper.Helper

extends Object
Class Inheritance
Known Direct Subclasses
javassist.util.proxy.DefineClassHelper.Java9, javassist.util.proxy.DefineClassHelper.Java7, javassist.util.proxy.DefineClassHelper.JavaOther

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
pack-priv abstract Class<?>
defineClass(String name, byte[] b, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

Helperback to summary
private Helper()

Method Detail

defineClassback to summary
pack-priv abstract Class<?> defineClass(String name, byte[] b, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain) throws ClassFormatError, CannotCompileException
javassist.util.proxy back to summary

private Class DefineClassHelper.Java11

extends JavaOther
Class Inheritance

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
pack-priv Class<?>
defineClass(String name, byte[] bcode, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain)

Overrides javassist.util.proxy.DefineClassHelper.JavaOther.defineClass.

Constructor Detail

Java11back to summary
private Java11()

Method Detail

defineClassback to summary
pack-priv Class<?> defineClass(String name, byte[] bcode, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain) throws ClassFormatError, CannotCompileException

Overrides javassist.util.proxy.DefineClassHelper.JavaOther.defineClass.

javassist.util.proxy back to summary

private Class DefineClassHelper.Java7

extends Helper
Class Inheritance

Field Summary

Modifier and TypeField and Description
private final MethodHandle
private final SecurityActions
stack

Deprecated as a consequence of SecurityActions being deprecated.

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
pack-priv Class<?>
defineClass(String name, byte[] b, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain)

Implements abstract javassist.util.proxy.DefineClassHelper.Helper.defineClass.

private final MethodHandle

Field Detail

defineClassback to summary
private final MethodHandle defineClass
stackback to summary
private final SecurityActions stack

Deprecated

as a consequence of SecurityActions being deprecated. See corresponding docs for further information.

Constructor Detail

Java7back to summary
private Java7()

Method Detail

defineClassback to summary
pack-priv Class<?> defineClass(String name, byte[] b, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain) throws ClassFormatError

Implements abstract javassist.util.proxy.DefineClassHelper.Helper.defineClass.

Annotations
@Override
getDefineClassMethodHandleback to summary
private final MethodHandle getDefineClassMethodHandle()
javassist.util.proxy back to summary

private Class DefineClassHelper.Java9

extends Helper
Class Inheritance

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv class

Field Summary

Modifier and TypeField and Description
private final Method
private final Object
private final DefineClassHelper.Java9.ReferencedUnsafe

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
pack-priv Class<?>
defineClass(String name, byte[] b, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain)

Implements abstract javassist.util.proxy.DefineClassHelper.Helper.defineClass.

private final DefineClassHelper.Java9.ReferencedUnsafe

Field Detail

getCallerClassback to summary
private final Method getCallerClass
stackback to summary
private final Object stack
sunMiscUnsafeback to summary
private final DefineClassHelper.Java9.ReferencedUnsafe sunMiscUnsafe

Constructor Detail

Java9back to summary
pack-priv Java9()

Method Detail

defineClassback to summary
pack-priv Class<?> defineClass(String name, byte[] b, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain) throws ClassFormatError

Implements abstract javassist.util.proxy.DefineClassHelper.Helper.defineClass.

Annotations
@Override
getReferencedUnsafeback to summary
private final DefineClassHelper.Java9.ReferencedUnsafe getReferencedUnsafe()
javassist.util.proxy back to summary

pack-priv final Class DefineClassHelper.Java9.ReferencedUnsafe

extends Object
Class Inheritance
  • java.lang.Object
  • javassist.util.proxy.DefineClassHelper.Java9.ReferencedUnsafe

Field Summary

Modifier and TypeField and Description
private final MethodHandle
private final SecurityActions.TheUnsafe

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
pack-priv Class<?>
defineClass(String name, byte[] b, int off, int len, ClassLoader loader, ProtectionDomain protectionDomain)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

defineClassback to summary
private final MethodHandle defineClass
sunMiscUnsafeTheUnsafeback to summary
private final SecurityActions.TheUnsafe sunMiscUnsafeTheUnsafe

Constructor Detail

ReferencedUnsafeback to summary
pack-priv ReferencedUnsafe(SecurityActions.TheUnsafe usf, MethodHandle meth)

Method Detail

defineClassback to summary
pack-priv Class<?> defineClass(String name, byte[] b, int off, int len, ClassLoader loader, ProtectionDomain protectionDomain) throws ClassFormatError
javassist.util.proxy back to summary

private Class DefineClassHelper.JavaOther

extends Helper
Class Inheritance
Known Direct Subclasses
javassist.util.proxy.DefineClassHelper.Java11

Field Summary

Modifier and TypeField and Description
private final Method
private final SecurityActions
stack

Deprecated as a consequence of SecurityActions being deprecated.

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
pack-priv Class<?>
defineClass(String name, byte[] b, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain)

Implements abstract javassist.util.proxy.DefineClassHelper.Helper.defineClass.

private final Method

Field Detail

defineClassback to summary
private final Method defineClass
stackback to summary
private final SecurityActions stack

Deprecated

as a consequence of SecurityActions being deprecated. See corresponding docs for further information.

Constructor Detail

JavaOtherback to summary
private JavaOther()

Method Detail

defineClassback to summary
pack-priv Class<?> defineClass(String name, byte[] b, int off, int len, Class<?> neighbor, ClassLoader loader, ProtectionDomain protectionDomain) throws ClassFormatError, CannotCompileException

Implements abstract javassist.util.proxy.DefineClassHelper.Helper.defineClass.

Annotations
@Override
getDefineClassMethodback to summary
private final Method getDefineClassMethod()