pinpoint-apm/pinpoint · error · PinpointException

ClassNo class with classLoader

Error message

ClassNo class ${className} with classLoader ${classLoader}

What it means

Guard in DebugTransformerClassInjector.injectClass: Class.forName on the requested className (redirected to the bootstrap loader for bootstrap packages) failed with a ClassNotFoundException-like error; the message names the class and classloader that could not supply it.

Solutions

  1. Verify the class name string is correct and present in the agent or bootstrap classpath
  2. Ensure debug transformer injection targets a loadable class
  3. Check classloader delegation and agent jar packaging
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/classloading/DebugTransformerClassInjector.java:44 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/739bf3ccf97284ea. Report an issue: GitHub.

Appendix: source

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

public class DebugTransformerClassInjector implements ClassInjector {

    private static final BootstrapPackage bootstrapPackage = new BootstrapPackage();

    public DebugTransformerClassInjector() {
    }

    @Override
    @SuppressWarnings("unchecked")
    public <T> Class<? extends T> injectClass(ClassLoader classLoader, String className) {
        ClassLoader targetClassLoader = classLoader;
        if (bootstrapPackage.isBootstrapPackage(className)) {
            targetClassLoader = Object.class.getClassLoader();
        }

        try {
            return (Class<? extends T>) Class.forName(className, false, targetClassLoader);
        } catch (ClassNotFoundException e) {
            throw new PinpointException("ClassNo class " + className + " with classLoader " + classLoader, e);
        }
    }


    @Override
    public InputStream getResourceAsStream(ClassLoader classLoader, String internalName) {
        ClassLoader targetClassLoader = getClassLoader(classLoader);

        targetClassLoader = filterBootstrapPackage(targetClassLoader, internalName);

        return targetClassLoader.getResourceAsStream(internalName);
    }

    private static ClassLoader getClassLoader(ClassLoader classLoader) {
        if (classLoader == null) {
            return ClassLoader.getSystemClassLoader();
        }
        return classLoader;

View on GitHub (pinned to 744c3d3075)