{"record":{"id":"25167f4b59f33cf6","repo":"pinpoint-apm/pinpoint","slug":"javamodulefactory-invoke-fail-caused-by-e-getm","errorCode":null,"errorMessage":"JavaModuleFactory() invoke fail Caused by:${e.getMessage()}","messagePattern":"JavaModuleFactory\\(\\) invoke fail Caused by:(.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/javamodule/JavaModuleFactoryFinder.java","lineNumber":41,"sourceCode":"import java.lang.reflect.Constructor;\nimport java.util.Objects;\n\n/**\n * @author Woonduk Kang(emeroad)\n */\npublic final class JavaModuleFactoryFinder {\n    private JavaModuleFactoryFinder() {\n    }\n\n    public static JavaModuleFactory lookup(Instrumentation instrumentation) {\n        Objects.requireNonNull(instrumentation, \"instrumentation\");\n\n        final Class<JavaModuleFactory> javaModuleFactory = getJavaModuleFactory();\n        try {\n            Constructor<JavaModuleFactory> constructor = javaModuleFactory.getDeclaredConstructor(Instrumentation.class);\n            return constructor.newInstance(instrumentation);\n        } catch (ReflectiveOperationException e) {\n            throw new IllegalStateException(\"JavaModuleFactory() invoke fail Caused by:\" + e.getMessage(), e);\n        }\n    }\n\n    private static Class<JavaModuleFactory> getJavaModuleFactory() {\n        final String factoryName = \"com.navercorp.pinpoint.bootstrap.java9.module.DefaultJavaModuleFactory\";\n        try {\n            return (Class<JavaModuleFactory>) Class.forName(factoryName, false, JavaModule.class.getClassLoader());\n        } catch (ClassNotFoundException e) {\n            throw new IllegalStateException(factoryName + \" not found\");\n        }\n    }\n}\n","sourceCodeStart":23,"sourceCodeEnd":54,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/javamodule/JavaModuleFactoryFinder.java#L23-L54","documentation":"JavaModuleFactoryFinder.lookup() reflectively instantiates the Java-9+ DefaultJavaModuleFactory via its Instrumentation constructor. If the reflective invocation fails (constructor not found, IllegalAccessException, instantiation failure, or underlying init exception), it rethrows as IllegalStateException wrapping the cause message.","triggerScenarios":"Running the Pinpoint agent on JDK 9+ where Class.getDeclaredConstructor(Instrumentation.class) or newInstance() throws ReflectiveOperationException — e.g. the DefaultJavaModuleFactory class lacks the expected (Instrumentation) constructor, its constructor throws, or its definition is not accessible to the profiler classloader.","commonSituations":"Bootstrap/profiler jars are mismatched versions (old bootstrap jar without DefaultJavaModuleFactory on the classpath path), a repackaged agent changed the factory signature, or the JDK module system blocks access during agent premain.","solutions":["Verify bootstrap.jar and profiler jar versions match exactly (same Pinpoint release); re-deploy the full agent distribution","Check that com.navercorp.pinpoint.bootstrap.java9.module.DefaultJavaModuleFactory exists in the deployed bootstrap jar (jar tf bootstrap.jar | grep DefaultJavaModuleFactory)","Inspect the chained cause ('Caused by') for NoSuchMethodException vs InvocationTargetException and fix accordingly (signature change means version mismatch)","If not running on JDK 9+, confirm the code path is only reached on Java 9+ and check your -Djava version/launcher"],"exampleFix":"// before: mismatched jars\njava -javaagent:pinpoint-bootstrap-2.4.0.jar -jar app.jar  // with profiler 2.5.0 jar copied in\n// after\njava -javaagent:pinpoint-bootstrap-2.5.0.jar -jar app.jar  // all agent jars from one release","handlingStrategy":"try-catch","validationCode":"// before starting the agent on JDK9+:\nClass<?> c = Class.forName(\"com.navercorp.pinpoint.bootstrap.java9.module.DefaultJavaModuleFactory\", false, ClassLoader.getSystemClassLoader());\nc.getDeclaredConstructor(java.lang.instrument.Instrumentation.class); // throws if signature missing","typeGuard":null,"tryCatchPattern":"try { moduleFactory = JavaModuleFactoryFinder.lookup(instrumentation); } catch (IllegalStateException e) { logger.error(\"JavaModuleFactory unavailable: {}\", e.getCause(), e); /* fall back to non-module path or abort startup */ }","preventionTips":["Ship the complete official agent distribution; never mix jar versions","Verify DefaultJavaModuleFactory presence in bootstrap.jar before deploying","Test agent startup on the exact JDK version used in production"],"tags":["reflection","java9","module-system","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"}