pinpoint-apm/pinpoint · error · IllegalStateException
${factoryName} not found
Error message
${factoryName} not found What it means
getJavaModuleFactory() loads the Java-9 module factory class by name through Class.forName. If the class is absent from the classloader visible to JavaModule, it throws IllegalStateException('<factoryName> not found'). This guards the Java 9+ module-handling path that requires DefaultJavaModuleFactory.
Source
Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/javamodule/JavaModuleFactoryFinder.java:50
public static JavaModuleFactory lookup(Instrumentation instrumentation) {
Objects.requireNonNull(instrumentation, "instrumentation");
final Class<JavaModuleFactory> javaModuleFactory = getJavaModuleFactory();
try {
Constructor<JavaModuleFactory> constructor = javaModuleFactory.getDeclaredConstructor(Instrumentation.class);
return constructor.newInstance(instrumentation);
} catch (ReflectiveOperationException e) {
throw new IllegalStateException("JavaModuleFactory() invoke fail Caused by:" + e.getMessage(), e);
}
}
private static Class<JavaModuleFactory> getJavaModuleFactory() {
final String factoryName = "com.navercorp.pinpoint.bootstrap.java9.module.DefaultJavaModuleFactory";
try {
return (Class<JavaModuleFactory>) Class.forName(factoryName, false, JavaModule.class.getClassLoader());
} catch (ClassNotFoundException e) {
throw new IllegalStateException(factoryName + " not found");
}
}
}
View on GitHub (pinned to 744c3d3075)
Solutions
- Deploy the complete, unmodified Pinpoint agent distribution (bootstrap jar includes DefaultJavaModuleFactory)
- Verify with: unzip -l pinpoint-bootstrap.jar | grep DefaultJavaModuleFactory
- If on JDK 8 where module handling is unnecessary, confirm the agent isn't wrongly taking the Java 9+ code path
- Re-download the matching Pinpoint agent release instead of hand-building a subset
Defensive patterns
Strategy: fallback
Validate before calling
try {
Class.forName("com.navercorp.pinpoint.bootstrap.java9.module.DefaultJavaModuleFactory", false, JavaModule.class.getClassLoader());
} catch (ClassNotFoundException e) {
// skip Java9 module wrapping
} Type guard
boolean hasModuleFactory() {
try { Class.forName("com.navercorp.pinpoint.bootstrap.java9.module.DefaultJavaModuleFactory", false, JavaModule.class.getClassLoader()); return true; }
catch (ClassNotFoundException e) { return false; }
} Prevention
- Deploy the unmodified full agent distribution
- Check jar contents for the java9 module classes before rollout
- On JDK 8, ensure the Java 9+ code path is not invoked
When it happens
Trigger: Calling javaModuleFactory() (which calls getJavaModuleFactory) on JDK 9+ when com.navercorp.pinpoint.bootstrap.java9.module.DefaultJavaModuleFactory is not loadable from JavaModule.class.getClassLoader() — typically because the bootstrap jar containing it is missing or stripped.
Common situations: Deploying only the profiler jar without the full agent distribution, manually assembling the agent classpath and omitting bootstrap classes, or using a trimmed/slim Docker image that excludes Java 9 module-support classes.
Related errors
- ${className} not found
- JavaModuleFactory() invoke fail Caused by:${e.getMessage()}
- ${moduleWrap} load fail Caused by:${e.getMessage()}
- initialize fail Caused by:
- invoke fail Caused by:
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/fbe42319cbd9dd90.
Report an issue: GitHub.