{"record":{"id":"fe24aa4792afd7d5","repo":"pinpoint-apm/pinpoint","slug":"initialize-fail-caused-by","errorCode":null,"errorMessage":" initialize fail Caused by:","messagePattern":" initialize fail Caused by:","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/classloader/DynamicClassLoaderFactory.java","lineNumber":41,"sourceCode":"/**\n * @author Woonduk Kang(emeroad)\n */\npublic class DynamicClassLoaderFactory implements ClassLoaderFactory {\n\n    private final Constructor<? extends ClassLoader> constructor;\n\n    public DynamicClassLoaderFactory(String classLoaderName, ClassLoader classLoader) {\n        this.constructor = getConstructor(classLoaderName, classLoader);\n    }\n\n\n    private static Constructor<? extends ClassLoader> getConstructor(String classLoaderName, ClassLoader classLoader) {\n        try {\n            final Class<? extends ClassLoader> classLoaderClazz =\n                    (Class<? extends ClassLoader>) Class.forName(classLoaderName, true, classLoader);\n            return classLoaderClazz.getDeclaredConstructor(String.class, URL[].class, ClassLoader.class, List.class);\n        } catch (ReflectiveOperationException ex) {\n            throw new IllegalStateException(classLoaderName +  \" initialize fail Caused by:\" + ex.getMessage(), ex);\n        }\n    }\n\n\n    @Override\n    public ClassLoader createClassLoader(String name, URL[] urls, ClassLoader parent, List<String> libClass) {\n        try {\n            return constructor.newInstance(name, urls, parent, libClass);\n        } catch (ReflectiveOperationException ex) {\n            throw new IllegalStateException(constructor + \" invoke fail Caused by:\" + ex.getMessage(), ex);\n        }\n    }\n}\n","sourceCodeStart":23,"sourceCodeEnd":55,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/classloader/DynamicClassLoaderFactory.java#L23-L55","documentation":"DynamicClassLoaderFactory.getConstructor reflectively loads the named ClassLoader class and fetches its (String, URL[], ClassLoader, List) constructor. Any ReflectiveOperationException (class not found, no such constructor) is wrapped in IllegalStateException '<name> initialize fail Caused by:...'.","triggerScenarios":"Passing a classLoaderName that is not on the classpath, or the target class exists but lacks the expected (String,URL[],ClassLoader,List) constructor, during DynamicClassLoaderFactory construction.","commonSituations":"Agent classpath missing pinpoint commons/bootstrap classes, renamed or refactored classloader class across Pinpoint versions, plugin providing a custom classloader without the required constructor signature.","solutions":["Confirm the classloader class FQCN is correct and present on the agent classpath","Ensure the class declares a public constructor (String, URL[], ClassLoader, List)","Align agent/plugin versions so the class matches the factory's expected signature","Read the Caused-by to distinguish ClassNotFoundException vs NoSuchMethodException"],"exampleFix":"// before\nclass MyLoader extends URLClassLoader { public MyLoader(URL[] urls, ClassLoader p){...} }\n// after\nclass MyLoader extends URLClassLoader {\n  public MyLoader(String name, URL[] urls, ClassLoader parent, List<String> lib) { super(name, urls, parent); }\n}","handlingStrategy":"try-catch","validationCode":"Class<?> c = Class.forName(classLoaderName, false, loader);\nif (Arrays.stream(c.getDeclaredConstructors()).noneMatch(k -> {\n  Class<?>[] ps = k.getParameterTypes();\n  return ps.length == 4 && ps[0] == String.class && ps[1] == URL[].class && ps[2] == ClassLoader.class && ps[3] == List.class;\n})) throw new IllegalArgumentException(classLoaderName + \" lacks required (String,URL[],ClassLoader,List) constructor\");","typeGuard":null,"tryCatchPattern":"try { factory = new DynamicClassLoaderFactory(name, parent); } catch (IllegalStateException e) { if (e.getMessage().endsWith(\"initialize fail Caused by:\" + e.getCause().getMessage())) { log.error(\"Check class FQCN and constructor signature\", e); } throw e; }","preventionTips":["Verify the classloader FQCN is on the agent classpath","Always provide the (String,URL[],ClassLoader,List) constructor in custom classloaders","Keep agent and plugin versions aligned","Check Caused-by: ClassNotFoundException = missing class, NoSuchMethodException = wrong signature"],"tags":["java","reflection","classloader"],"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"}