pinpoint-apm/pinpoint · error · IllegalStateException

J9BootLoader create fail Caused by:

Error message

J9BootLoader create fail Caused by:

What it means

BootLoaderFactory.newBootLoader picks J9BootLoader on IBM J9 VMs; if instantiating J9BootLoader raises a linkage Error (missing classes/fields specific to the J9 internals it reflects on), it rethrows as IllegalStateException 'J9BootLoader create fail Caused by:...'.

Source

Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/classloader/BootLoaderFactory.java:39

/**
 * @author Woonduk Kang(emeroad)
 */
public final class BootLoaderFactory {

    private static final boolean isJ9Vm = isJ9VM();

    private BootLoaderFactory() {
    }


    public static BootLoader newBootLoader() {
        if (isJ9Vm) {
            try {
                return new J9BootLoader();
            } catch (Error linkageError) {
                // TODO log
                throw new IllegalStateException("J9BootLoader create fail Caused by:" + linkageError.getMessage(), linkageError);
            }
        }
        return new LauncherBootLoader();
    }

    private static boolean isJ9VM() {
        JvmType jvmType = JvmUtils.getType();
        return jvmType == JvmType.IBM;
    }

}

View on GitHub (pinned to 744c3d3075)

Solutions

  1. Verify the J9/OpenJ9 version against the agent's supported matrix and upgrade or downgrade the JVM
  2. Check the Caused-by message to identify the missing class and whether the agent jar is complete
  3. File/consult the issue for J9 compatibility; use an OpenJDK HotSpot JVM if possible
  4. Keep isJ9Vm detection accurate so HotSpot VMs use LauncherBootLoader

Example fix

// JVM selection
// before: running on unsupported OpenJ9 0.30+
// after: use supported JDK
JAVA_HOME=/path/to/jdk8-hotspot java -javaagent:pinpoint-bootstrap.jar ...
Defensive patterns

Strategy: try-catch

Validate before calling

String vmName = System.getProperty("java.vm.name");
boolean j9 = vmName != null && vmName.contains("OpenJ9") || (vmName != null && vmName.contains("IBM J9"));
// confirm supported JDK before attaching agent

Try / catch

try { BootLoader bl = BootLoaderFactory.newBootLoader(); } catch (IllegalStateException e) { if (e.getMessage().startsWith("J9BootLoader create fail")) { log.error("JVM unsupported for J9 bootstrap: {}", e.getCause()); } throw e; }

Prevention

When it happens

Trigger: Running the Pinpoint agent on an IBM J9 JVM where J9BootLoader's reflective bootstrap access fails (different internal class names across J9/OpenJ9 versions).

Common situations: Newer OpenJ9 releases renamed internal bootstrap-classloader classes, agent attached to a J9 VM not matching the supported version, or a fat-jar missing J9BootLoader dependency classes.

Related errors


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