pinpoint-apm/pinpoint · error · NotFoundInstrumentException
is not found in
Error message
${methodName}${desc} is not found in ${superClassInternalName} What it means
Thrown by ASMClass.addDelegatorMethod: the superclass loaded successfully but does not declare the method (name + descriptor) the delegator is supposed to forward to, so there is nothing to delegate and instrumentation fails.
Solutions
- Verify the method name and parameter types match a method actually declared in the superclass (not just a subtype)
- Correct the plugin's delegator method specification
- Instrument the class that truly declares the method instead
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/ASMClass.java:255 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/7b5e4d205d5a9115.
Report an issue: GitHub.
Appendix: source
Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/ASMClass.java:255
@Override
public InstrumentMethod addDelegatorMethod(final String methodName, final String... paramTypes) throws InstrumentException {
Objects.requireNonNull(methodName, "methodName");
// check duplicated method.
if (getDeclaredMethod(methodName, paramTypes) != null) {
throw new InstrumentException(getName() + " already have method(" + methodName + ").");
}
final ASMClassNodeAdapter superClassNode = ASMClassNodeAdapter.get(this.pluginContext, classNode.getClassLoader(), classNode.getProtectionDomain(), this.classNode.getSuperClassInternalName());
if (superClassNode == null) {
throw new NotFoundInstrumentException(getName() + " not found super class(" + this.classNode.getSuperClassInternalName() + ")");
}
final String desc = JavaAssistUtils.javaTypeToJvmSignature(paramTypes);
final ASMMethodNodeAdapter superMethodNode = superClassNode.getDeclaredMethod(methodName, desc);
if (superMethodNode == null) {
throw new NotFoundInstrumentException(methodName + desc + " is not found in " + superClassNode.getInternalName());
}
final ASMMethodNodeAdapter methodNode = this.classNode.addDelegatorMethod(superMethodNode);
setModified(true);
return new ASMMethod(this.engineComponent, this.pluginContext, this, methodNode);
}
@Override
public void addField(Class<?> accessorClass) throws InstrumentException {
Objects.requireNonNull(accessorClass, "accessorClass");
try {
final AccessorAnalyzer.AccessorDetails accessorDetails = AccessorAnalyzer.instance().analyze(accessorClass);
final Type type = accessorDetails.getFieldType();
final String accessorTypeName = accessorClass.getName();
final String fieldName = FIELD_PREFIX + JavaAssistUtils.javaClassNameToVariableName(accessorTypeName);
// skip members already declared in this class. e.g. a CGLIB proxy copies the injected members of an instrumented classView on GitHub (pinned to 744c3d3075)