{"record":{"id":"f3e0f166e9d6fbc0","repo":"pinpoint-apm/pinpoint","slug":"bootstrapclassloader","errorCode":null,"errorMessage":"BootStrapClassLoader","messagePattern":"BootStrapClassLoader","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/classloading/PlainClassLoaderHandler.java","lineNumber":71,"sourceCode":"    private final DefineClass defineClass;\n\n    // TODO remove static field\n    private static final ConcurrentMap<ClassLoader, ClassLoaderAttachment> classLoaderAttachment = new ConcurrentWeakHashMap<>();\n\n\n    private final PluginConfig pluginConfig;\n\n    public PlainClassLoaderHandler(DefineClass defineClass, PluginConfig pluginConfig) {\n        this.defineClass = Objects.requireNonNull(defineClass, \"defineClass\");\n        this.pluginConfig = Objects.requireNonNull(pluginConfig, \"pluginConfig\");\n        this.pluginJarReader = new JarReader(pluginConfig.getPluginJarFile());\n    }\n\n    @Override\n    @SuppressWarnings(\"unchecked\")\n    public <T> Class<? extends T> injectClass(ClassLoader classLoader, String className) {\n        if (classLoader == Object.class.getClassLoader()) {\n            throw new IllegalStateException(\"BootStrapClassLoader\");\n        }\n\n        try {\n            if (!isPluginPackage(className, classLoader)) {\n                return loadClass(classLoader, className);\n            }\n            return (Class<T>) injectClass0(classLoader, className);\n        } catch (Exception e) {\n            logger.warn(\"Failed to load plugin class {} with classLoader {}\", className, classLoader, e);\n            throw new PinpointException(\"Failed to load plugin class \" + className + \" with classLoader \" + classLoader, e);\n        }\n    }\n\n    @Override\n    public InputStream getResourceAsStream(ClassLoader targetClassLoader, String internalName) {\n        try {\n            final String name = JavaAssistUtils.jvmNameToJavaName(internalName);\n            if (!isPluginPackage(name, targetClassLoader)) {","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/classloading/PlainClassLoaderHandler.java#L53-L89","documentation":"IllegalStateException guard in injectClass: plugin classes cannot be injected into the bootstrap classloader (classLoader == Object.class.getClassLoader()), which has no parent to define agent/plugin classes.","triggerScenarios":"Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/classloading/PlainClassLoaderHandler.java:71 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Avoid calling injectClass with a bootstrap classloader; pass the agent or system classloader instead","Register plugin classes on the bootstrap classpath (bootstrap-jars) rather than injecting"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}