Top Description Inners Fields Methods
org.easymock.bytebuddy.dynamic.loading

public Interface ClassInjector

Known Direct Implementers
org.easymock.bytebuddy.dynamic.loading.ClassInjector.AbstractBase
Imports
com.sun.jna.*, edu.umd.cs.findbugs.annotations.SuppressFBWarnings, org.easymock.bytebuddy.ByteBuddy, .ClassFileVersion, org.easymock.bytebuddy.asm.MemberRemoval, org.easymock.bytebuddy.build.AccessControllerPlugin, .HashCodeAndEqualsPlugin, org.easymock.bytebuddy.description.modifier.Visibility, org.easymock.bytebuddy.description.type.PackageDescription, .TypeDescription, org.easymock.bytebuddy.dynamic.DynamicType, org.easymock.bytebuddy.dynamic.scaffold.TypeValidation, org.easymock.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy, org.easymock.bytebuddy.implementation.FixedValue, .MethodCall, org.easymock.bytebuddy.utility.GraalImageCode, .JavaModule, .JavaType, .RandomString, org.easymock.bytebuddy.utility.dispatcher.JavaDispatcher, org.easymock.bytebuddy.utility.nullability.AlwaysNull, .MaybeNull, .UnknownNull, org.easymock.bytebuddy.utility.privilege.GetMethodAction, java.io.File, .FileOutputStream, .IOException, java.lang.instrument.Instrumentation, java.lang.reflect.*, java.net.URL, java.security.Permission, .PrivilegedAction, .ProtectionDomain, java.util.*, java.util.jar.JarEntry, .JarFile, .JarOutputStream

A class injector is capable of injecting classes into a java.lang.ClassLoader without requiring the class loader to being able to explicitly look up these classes.

Important Note

Byte Buddy does not supply privileges when injecting code. When using a java.lang.SecurityManager, the user of this injector is responsible for providing access to non-public properties.

Nested and Inner Type Summary

Modifier and TypeClass and Description
public abstract static class
ClassInjector.AbstractBase

An abstract base implementation of a class injector.

public static class
ClassInjector.UsingInstrumentation

A class injector using a java.lang.instrument.Instrumentation to append to either the boot classpath or the system class path.

public static class
ClassInjector.UsingJna

A class injector using JNA to invoke JNI's define class utility for defining a class.

public static class
ClassInjector.UsingLookup

A class injector that uses a java.lang.invoke.MethodHandles$Lookup object for defining a class.

public static class
ClassInjector.UsingReflection

A class injector that uses reflective method calls.

public static class
ClassInjector.UsingUnsafe

A class injector that uses sun.misc.Unsafe or jdk.internal.misc.Unsafe to inject classes.

Field Summary

Modifier and TypeField and Description
public static final boolean
ALLOW_EXISTING_TYPES

Determines the default behavior for type injections when a type is already loaded.

public static final Permission
SUPPRESS_ACCESS_CHECKS

A permission for the suppressAccessChecks permission.

Method Summary

Modifier and TypeMethod and Description
public Map<TypeDescription, Class<?>>

Returns:

The loaded types that were passed as arguments.
inject
(Map<? extends TypeDescription, byte[]>
The types to load via injection.
types
)

Injects the given types into the represented class loader.

public Map<String, Class<?>>

Returns:

The loaded types that were passed as arguments.
injectRaw
(Map<? extends String, byte[]>
The types to load via injection.
types
)

Injects the given types into the represented class loader using a mapping from name to binary representation.

public boolean

Returns:

true if this injector is available on the current VM.
isAlive
()

Indicates if this class injector is available on the current VM.