pinpoint-apm/pinpoint · error · IllegalStateException

ClassLoader.findBootstrapClassOrNull api not found

Error message

ClassLoader.findBootstrapClassOrNull api not found

What it means

Fires in findBootstrapClassOrNullMethod when neither ClassLoader.findBootstrapClassOrNull (OpenJDK 7+) nor the legacy findBootstrapClass0 (OpenJDK 6) can be found via reflection: the running JDK exposes neither private method, so the bootstrap class lookup cannot be wired up.

Solutions

  1. Run Pinpoint on a supported JDK (OpenJDK 6+ or a JVM exposing findBootstrapClassOrNull)
  2. Upgrade the agent to a version supporting your JDK's classloader internals
  3. Verify no security manager or JPMS strong encapsulation blocks getDeclaredMethod on java.lang.ClassLoader
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/classloader/LauncherBootLoader.java:66 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/d1cc11525499ae9c. Report an issue: GitHub.

Appendix: source

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

        // openjdk7 : success
        // openjdk6 : fail (findBootstrapClass0)
        NoSuchMethodException rootException;
        try {
            Method findBootstrapClassOrNull = ClassLoader.class.getDeclaredMethod("findBootstrapClassOrNull", String.class);
            findBootstrapClassOrNull.setAccessible(true);
            return findBootstrapClassOrNull;
        } catch (NoSuchMethodException ex) {
            rootException = ex;
        }
        try {
            // for openjdk6
            Method findBootstrapClass0 = ClassLoader.class.getDeclaredMethod("findBootstrapClass0", String.class);
            findBootstrapClass0.setAccessible(true);
            return findBootstrapClass0;
        } catch (NoSuchMethodException ignored) {
            // skip
        }
        throw new IllegalStateException("ClassLoader.findBootstrapClassOrNull api not found", rootException);
    }

    static {
        // preload
        new URLEnumeration(null);
    }

    LauncherBootLoader() {
    }

    private static URLClassPath getBootstrapClassPath() {
        return Launcher.getBootstrapClassPath();
    }

    @Override
    public URL findResource(String name) {
        final Resource res = bootstrapClassPath.getResource(name);
        if (res == null) {

View on GitHub (pinned to 744c3d3075)