Class Installer


  • public class Installer
    extends java.lang.Object
    An installer class which defined the hook-in methods that are required by the Java agent specification.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.instrument.Instrumentation instrumentation
      A field for carrying the Instrumentation that was loaded by the Byte Buddy agent.
      static java.lang.String NAME
      The name of the Installer class that is stored in an obfuscated format which will not be relocated.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private Installer()
      The installer provides only static hook-in methods and should not be instantiated.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void agentmain​(java.lang.String arguments, java.lang.instrument.Instrumentation instrumentation)
      Allows the installation of this agent via the attach API.
      private static void doMain​(java.lang.instrument.Instrumentation instrumentation)
      Installs the Instrumentation in the current class and possibly obfuscated class.
      static java.lang.instrument.Instrumentation getInstrumentation()
      Returns the instrumentation that was loaded by the Byte Buddy agent.
      static void premain​(java.lang.String arguments, java.lang.instrument.Instrumentation instrumentation)
      Allows the installation of this agent via a command line argument.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • NAME

        public static final java.lang.String NAME
        The name of the Installer class that is stored in an obfuscated format which will not be relocated.
      • instrumentation

        @MaybeNull
        private static volatile java.lang.instrument.Instrumentation instrumentation
        A field for carrying the Instrumentation that was loaded by the Byte Buddy agent. Note that this field must never be accessed directly as the agent is injected into the VM's system class loader. This way, the field of this class might be null even after the installation of the Byte Buddy agent as this class might be loaded by a different class loader than the system class loader.
    • Constructor Detail

      • Installer

        private Installer()
        The installer provides only static hook-in methods and should not be instantiated.
    • Method Detail

      • getInstrumentation

        public static java.lang.instrument.Instrumentation getInstrumentation()

        Returns the instrumentation that was loaded by the Byte Buddy agent. When a security manager is active, the RuntimePermission for getInstrumentation is required by the caller.

        Important: This method must only be invoked via the ClassLoader.getSystemClassLoader() where any Java agent is loaded. It is possible that two versions of this class exist for different class loaders.

        Returns:
        The instrumentation instance of the Byte Buddy agent.
      • premain

        public static void premain​(java.lang.String arguments,
                                   java.lang.instrument.Instrumentation instrumentation)
        Allows the installation of this agent via a command line argument.
        Parameters:
        arguments - The unused agent arguments.
        instrumentation - The instrumentation instance.
      • agentmain

        public static void agentmain​(java.lang.String arguments,
                                     java.lang.instrument.Instrumentation instrumentation)
        Allows the installation of this agent via the attach API.
        Parameters:
        arguments - The unused agent arguments.
        instrumentation - The instrumentation instance.
      • doMain

        private static void doMain​(java.lang.instrument.Instrumentation instrumentation)
        Installs the Instrumentation in the current class and possibly obfuscated class.
        Parameters:
        instrumentation - The instrumentation instance.