pinpoint-apm/pinpoint · error · IllegalStateException

create fail Caused by

Error message

${name} create fail Caused by:${e.getMessage()}

What it means

Thrown when the agent fails to instantiate Java9DefineClass via reflection while building the DefineClass delegate; the message names the class and chains the underlying reflective failure (e.g. ClassNotFoundException or linkage error) on Java 9+ JVMs.

Solutions

  1. Verify the Java9DefineClass class is present and shaded correctly in the agent jar
  2. Check JVM version detection (JvmUtils.getVersion) is not misreporting the version
  3. Ensure no custom classloader hierarchy is blocking reflective access to agent classes; add opens/add-opens flags if the module system denies access
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/classloading/DefineClassFactory.java:40 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/e50bb27fc86ffdf7. Report an issue: GitHub.

Appendix: source

Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/classloading/DefineClassFactory.java:40

import java.lang.reflect.Constructor;

/**
 * @author Woonduk Kang(emeroad)
 */
public final class DefineClassFactory {
    private static final DefineClass defineClass = newDefineClass();

    private static DefineClass newDefineClass() {
        final JvmVersion version = JvmUtils.getVersion();
        if (version.onOrAfter(JvmVersion.JAVA_9)) {
            final ClassLoader agentClassLoader = DefineClassFactory.class.getClassLoader();
            final String name = "com.navercorp.pinpoint.profiler.instrument.classloading.Java9DefineClass";
            try {
                Class<DefineClass> defineClassClazz = (Class<DefineClass>) agentClassLoader.loadClass(name);
                Constructor<DefineClass> constructor = defineClassClazz.getDeclaredConstructor();
                return constructor.newInstance();
            } catch (ReflectiveOperationException e) {
                throw new IllegalStateException(name + " create fail Caused by:" + e.getMessage(), e);
            }
        }

        return new Java8DefineClass();
    }

    public static DefineClass getDefineClass() {
        return defineClass;
    }

}

View on GitHub (pinned to 744c3d3075)