pinpoint-apm/pinpoint · error · IllegalStateException
not found Caused by:
Error message
not found Caused by:
What it means
getAbstractClassLoader loads an internal classloader abstract/base class by name via Class.forName(className, false, bootstrap-ish loader). If the class is absent on that JVM, it throws IllegalStateException '<className> not found Caused by:...'.
Source
Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/classloader/J9BootLoader.java:67
try {
bootstrapClassLoader = ClassLoader.class.getDeclaredField("systemClassLoader");
} catch (NoSuchFieldException e2) {
throw new IllegalStateException("bootstrapClassLoader not found Caused by:" + e.getMessage() + ", and " + e2.getMessage(), e2);
}
}
try {
bootstrapClassLoader.setAccessible(true);
return (ClassLoader) bootstrapClassLoader.get(ClassLoader.class);
} catch (IllegalAccessException e) {
throw new IllegalStateException("bootstrapClassLoader access fail Caused by:" + e.getMessage(), e);
}
}
private static Class<?> getAbstractClassLoader(String className) {
try {
return Class.forName(className, false, Object.class.getClassLoader());
} catch (ClassNotFoundException e) {
throw new IllegalStateException(className + " not found Caused by:" + e.getMessage(), e);
}
}
private static Method getMethod(Class<?> bootstrapClassLoader, String methodName, Class<?>... parameterTypes) {
try {
Method declaredMethod = bootstrapClassLoader.getDeclaredMethod(methodName, parameterTypes);
declaredMethod.setAccessible(true);
return declaredMethod;
} catch (NoSuchMethodException e) {
throw new IllegalStateException(methodName + " not found Caused by:" + e.getMessage(), e);
}
}
@Override
public Enumeration<URL> findResources(String name) throws IOException {
try {View on GitHub (pinned to 744c3d3075)
Solutions
- Confirm the JVM is a supported IBM J9 build where the internal class exists
- Update Pinpoint agent to a version matching your J9/OpenJ9 internals
- Check the Caused-by message to see exactly which class name was probed
- Fall back to LauncherBootLoader by running on HotSpot/OpenJDK
Example fix
// before // pinpoint agent on AdoptOpenJDK OpenJ9 0.35 -> com.ibm.oti.vm.AbstractClassLoader missing // after // run on IBM J9 SDK 8 or switch to OpenJDK HotSpot java -version # verify VM before attaching agent
Defensive patterns
Strategy: try-catch
Validate before calling
String cls = "com.ibm.oti.vm.AbstractClassLoader";
if (Class.forName(cls, false, Object.class.getClassLoader()) == null) { /* unreachable, CNFE thrown */ }
// wrap instead:
try { Class.forName(cls, false, Object.class.getClassLoader()); } catch (ClassNotFoundException e) { throw new IllegalStateException("Not a supported IBM J9 VM"); } Try / catch
try { J9BootLoader bl = createJ9BootLoader(); } catch (IllegalStateException e) { if (e.getMessage().endsWith("not found")) { log.error("Unsupported JVM for J9 bootstrap; switching to default loader"); bl = new LauncherBootLoader(); } else throw e; } Prevention
- Verify java.vm.name reports IBM J9 before enabling this path
- Keep Pinpoint agent version aligned with your J9/OpenJ9 release
- Avoid stripped/custom JRE images lacking internal IBM classes
- Watch the Caused-by message to learn the exact class name probed
When it happens
Trigger: J9BootLoader initialization calls getAbstractClassLoader with a hardcoded internal class name (J9-specific, e.g. 'com.ibm.oti.vm.AbstractClassLoader') that does not exist on the running JVM.
Common situations: Running the agent on a JVM that is not IBM J9 (class absent), an OpenJ9 version that removed/renamed the internal class, or stripped/custom runtime images without internal IBM classes.
Related errors
- J9BootLoader create fail Caused by:
- bootstrapClassLoader not found Caused by:
- ${interfaceName} not found
- initialize fail Caused by:
- invoke fail Caused by:
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/be4b92dcaf484f65.
Report an issue: GitHub.