pinpoint-apm/pinpoint · error · IllegalArgumentException
invalid full qualified method name(${fullQualifiedMethodName
Error message
invalid full qualified method name(${fullQualifiedMethodName}). not found method What it means
UserPlugin.toClassName splits a fully qualified method name like 'com.foo.Bar.baz' into its class portion by finding the last dot. If there is no dot (position <= 0), the string is not a valid fully qualified method name, and it throws IllegalArgumentException with the offending input. This is a plugin configuration parsing guard.
Source
Thrown at agent-module/plugins/user/src/main/java/com/navercorp/pinpoint/plugin/user/UserPlugin.java:175
final String className = toClassName(fullyQualifiedMethodName);
final String methodName = toMethodName(fullyQualifiedMethodName);
Set<String> methodNames = userMethods.get(className);
if (methodNames == null) {
methodNames = new HashSet<>();
userMethods.put(className, methodNames);
}
methodNames.add(methodName);
} catch (Exception e) {
logger.warn("Failed to parse user method(" + fullyQualifiedMethodName + ").", e);
}
}
return userMethods;
}
String toClassName(String fullQualifiedMethodName) {
final int classEndPosition = fullQualifiedMethodName.lastIndexOf('.');
if (classEndPosition <= 0) {
throw new IllegalArgumentException("invalid full qualified method name(" + fullQualifiedMethodName + "). not found method");
}
return fullQualifiedMethodName.substring(0, classEndPosition);
}
String toMethodName(String fullQualifiedMethodName) {
final int methodBeginPosition = fullQualifiedMethodName.lastIndexOf('.');
if (methodBeginPosition <= 0 || methodBeginPosition + 1 >= fullQualifiedMethodName.length()) {
throw new IllegalArgumentException("invalid full qualified method name(" + fullQualifiedMethodName + "). not found method");
}
return fullQualifiedMethodName.substring(methodBeginPosition + 1);
}
@Override
public void setTransformTemplate(TransformTemplate transformTemplate) {
this.transformTemplate = transformTemplate;
}View on GitHub (pinned to 744c3d3075)
Solutions
- Provide the full qualified method name including class and method, e.g. 'com.example.Foo.bar'
- Check the plugin configuration file for truncated or wrapped lines
- Trim whitespace/typos such as leading dots or missing package segments
- Add a config pre-check that validates each entry contains at least one dot
Example fix
// before
userPlugin.include("com.example.Foo");
// after
userPlugin.include("com.example.Foo.handleRequest"); Defensive patterns
Strategy: validation
Validate before calling
String fqn = config.getMethodName();
if (fqn == null || fqn.indexOf('.') <= 0 || fqn.endsWith(".")) {
throw new IllegalArgumentException("expected package.Class.method, got: " + fqn);
} Try / catch
try {
String cls = toClassName(fqn);
} catch (IllegalArgumentException e) {
logger.error("bad user-plugin method expression: {}", fqn, e);
throw new PluginSetupException(e);
} Prevention
- Always configure fully qualified method names as package.Class.method
- Trim and inspect config values for truncation before plugin setup
- Validate every configured expression at startup with a dot-count check
- Keep method expressions on one line in config files to avoid line-wrap truncation
When it happens
Trigger: A user-plugin configuration value (e.g. a targeted method expression) contains no '.' separator between class and method — e.g. 'MyClass' or an empty string passed to toClassName.
Common situations: Typo or missing method part in pinpoint-user-plugin config (profiler.user.include/remove entries); property file line-wrapping that truncated the method name; using a class name instead of a fully qualified method name.
Understand the failure class
Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.
Related errors
- invalid full qualified method name(${fullQualifiedMethodName
- Unknown time unit
- Unknown AgentType:
- Failed to detect pinpoint profile. Please add -Dpinpoint.act
- unsupported profile or profile alias:
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/246412f4e1c81630.
Report an issue: GitHub.