{"record":{"id":"67e8f6e01274e5ab","repo":"pinpoint-apm/pinpoint","slug":"classname-not-found","errorCode":null,"errorMessage":"${className} not found","messagePattern":"(.+?) not found","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/DefaultApplicationContext.java","lineNumber":164,"sourceCode":"    }\n\n    private ClassFileTransformer wrapJava9ClassFileTransformer(ClassFileTransformModuleAdaptor classFileTransformer) {\n        logger.info(\"initialize Java9ClassFileTransformer\");\n        String moduleWrap = \"com.navercorp.pinpoint.bootstrap.java9.module.ClassFileTransformerModuleWrap\";\n        try {\n            Class<ClassFileTransformer> cftClass = (Class<ClassFileTransformer>) forName(moduleWrap, DefaultApplicationContext.class.getClassLoader());\n            Constructor<ClassFileTransformer> constructor = cftClass.getDeclaredConstructor(ClassFileTransformModuleAdaptor.class);\n            return constructor.newInstance(classFileTransformer);\n        } catch (Exception e) {\n            throw new IllegalStateException(moduleWrap + \" load fail Caused by:\" + e.getMessage(), e);\n        }\n    }\n\n    private Class<?> forName(String className, ClassLoader classLoader) {\n        try {\n            return Class.forName(className, false, classLoader);\n        } catch (ClassNotFoundException e) {\n            throw new IllegalStateException(className + \" not found\");\n        }\n    }\n\n    private ClassFileTransformer wrap(ClassFileTransformer classFileTransformer) {\n        final boolean enableBytecodeDump = profilerConfig.readBoolean(ASMBytecodeDumpService.ENABLE_BYTECODE_DUMP, ASMBytecodeDumpService.ENABLE_BYTECODE_DUMP_DEFAULT_VALUE);\n        if (enableBytecodeDump) {\n            logger.info(\"wrapBytecodeDumpTransformer\");\n            return BytecodeDumpTransformer.wrap(classFileTransformer, profilerConfig);\n        }\n        return classFileTransformer;\n    }\n\n    public ProfilerConfig getProfilerConfig() {\n        return profilerConfig;\n    }\n\n    public Injector getInjector() {\n        return injector;","sourceCodeStart":146,"sourceCodeEnd":182,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/DefaultApplicationContext.java#L146-L182","documentation":"The private forName() helper in DefaultApplicationContext wraps Class.forName and converts ClassNotFoundException into IllegalStateException('<className> not found'). It is used to locate JDK 9 module-support classes by name, so a missing class aborts agent startup.","triggerScenarios":"wrapJava9ClassFileTransformer calls forName('com.navercorp.pinpoint.bootstrap.java9.module.ClassFileTransformerModuleWrap', ...) on JDK 9+ while that class is not present in DefaultApplicationContext's classloader (ClassNotFoundException).","commonSituations":"Incomplete agent deployment missing bootstrap java9 classes, custom slim images, or jar conflicts where an older bootstrap jar shadows the required class.","solutions":["Deploy the complete official Pinpoint agent distribution for your version","Confirm the class exists: jar tf bootstrap.jar | grep ClassFileTransformerModuleWrap","Avoid mixing bootstrap/profiler jars from different releases","If the class is genuinely absent on your JDK, run on a supported JDK version for the release"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"try { Class.forName(\"com.navercorp.pinpoint.bootstrap.java9.module.ClassFileTransformerModuleWrap\", false, loader); } catch (ClassNotFoundException e) { /* class missing — do not take Java9 wrap path */ }","typeGuard":null,"tryCatchPattern":"try { cls = forName(name, loader); } catch (IllegalStateException e) { logger.error(\"{} missing from classpath\", name); throw e; }","preventionTips":["Ship full official agent builds only","List jar contents to verify java9 support classes exist pre-deploy","Match JDK version to the agent release's supported matrix"],"tags":["reflection","java9","classloader","missing-class"],"backgroundTag":"class-not-found","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}