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
VertxPlugin.toClassName parses a fully qualified method name and returns the class portion (everything before the last dot, trimmed). If the string contains no dot, the input is not a valid fully qualified method name and it throws IllegalArgumentException. This validates Vertx plugin method-target configuration.
Source
Thrown at agent-module/plugins/vertx/src/main/java/com/navercorp/pinpoint/plugin/vertx/VertxPlugin.java:162
.build());
}
}
List<String> filterBasePackageNames(List<String> basePackageNames) {
final List<String> list = new ArrayList<>();
for (String basePackageName : basePackageNames) {
final String name = basePackageName.trim();
if (!name.isEmpty()) {
list.add(name);
}
}
return list;
}
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).trim();
}
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).trim();
}
private void addHandlerInterceptor(final List<String> basePackageNames) {
// basepackageNames AND io.vertx.core.Handler
final Matcher matcher = Matchers.newPackageBasedMatcher(basePackageNames, new InterfaceInternalNameMatcherOperand("io.vertx.core.Handler", true));View on GitHub (pinned to 744c3d3075)
Solutions
- Use the full form 'package.Class.method' in Vertx plugin configuration
- Check the config source (file/env) for truncated values
- Trim stray whitespace so the parsed class name is valid
- Add startup-time validation of all configured method expressions
Example fix
// before "io.vertx.core.http.HttpClient" // after "io.vertx.core.http.HttpClient.request"
Defensive patterns
Strategy: validation
Validate before calling
if (fqn == null || fqn.trim().isEmpty() || fqn.lastIndexOf('.') <= 0) {
throw new IllegalArgumentException("vertx plugin target must be package.Class.method: " + fqn);
} Try / catch
try {
String className = toClassName(fqn);
} catch (IllegalArgumentException e) {
logger.error("invalid vertx plugin target '{}'", fqn, e);
throw new PluginSetupException(e);
} Prevention
- Verify Vertx plugin config entries include the method name, not just the class
- Normalize whitespace in config values before parsing
- Fail fast at agent startup by parsing all configured targets eagerly
- Use the message's offending value to locate and fix the bad config entry
When it happens
Trigger: A Vertx plugin config entry (transform target expression) lacks a '.' between class and method — e.g. 'io.vertx.core.http.HttpClient' without the method part, or an empty/blank string.
Common situations: Misconfigured profiler.plugin.vertx target entries; copy-paste errors dropping the method name; IDE auto-formatting removing part of the expression.
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/06f3b9c51f2218c8.
Report an issue: GitHub.