kestra-io/kestra · error · KestraRuntimeException
No %s can be found for '%s=%s', and version=%s. Supported ve
Error message
No %s can be found for '%s=%s', and version=%s. Supported versions are: %s
What it means
Thrown by AbstractPluginInterfaceFactory.resolve() when the plugin type is found in the type catalog but the pluginRegistry has no class registered for the requested version (or any version when pluginVersion is null). This means the plugin identifier resolves to a known type, but the specific version requested is not on the classpath / not loaded. The message lists all supported versions so the caller can pick a valid one. This is a KestraRuntimeException.
Source
Thrown at core/src/main/java/io/kestra/core/plugins/AbstractPluginInterfaceFactory.java:98
final String pluginId = idAndVersion.getLeft();
final String pluginVersion = idAndVersion.getRight();
Optional<TypeAndId> optional = allTypes()
.filter(typeAndId -> Optional.ofNullable(typeAndId.id).map(id -> id.equalsIgnoreCase(pluginId)).orElse(false))
.findFirst();
if (optional.isEmpty()) {
throw notFoundException(pluginId);
}
// Find the corresponding plugin 'class'.
final String pluginType = optional.get().type();
Class<? extends Plugin> pluginClass = pluginRegistry
.findClassByIdentifier(pluginVersion == null ? pluginType : pluginType + ":" + pluginVersion);
if (pluginClass == null) {
List<String> supportedVersions = pluginRegistry.getAllVersionsForType(pluginType);
throw new KestraRuntimeException(
"No %s can be found for '%s=%s', and version=%s. Supported versions are: %s".formatted(
lookupDisplayName(), typeProperty(), pluginId, pluginVersion, supportedVersions
)
);
}
// Plugins are handled as any serializable/deserialize plugins.
T plugin;
try {
// Make sure config is not null, otherwise deserialization result will be null too.
Map<String, Object> nonEmptyConfig = Optional.ofNullable(pluginConfiguration).orElse(Map.of());
plugin = (T) JacksonMapper.toMap(nonEmptyConfig, pluginClass);
} catch (Exception e) {
throw new KestraRuntimeException(
String.format("Failed to create %s '%s'. Error: %s", configDisplayName(), pluginId, e.getMessage())
);
}
View on GitHub (pinned to 823fada927)
Solutions
- Check the message's 'Supported versions' list and use one of those.
- Verify the plugin JAR for the requested version is in the Kestra plugins directory.
- Remove the explicit version qualifier to let Kestra pick the default registered version.
- Restart Kestra after installing the correct plugin version.
Example fix
# before plugin: io.kestra.plugin.aws.s3.Upload:1.0.0 # not registered # KestraRuntimeException: Supported versions are: [2.0.0] # after plugin: io.kestra.plugin.aws.s3.Upload:2.0.0 # or omit version plugin: io.kestra.plugin.aws.s3.Upload
Defensive patterns
Strategy: validation
Validate before calling
List<String> versions = pluginRegistry.getAllVersionsForType(pluginType);
if (pluginVersion != null && !versions.contains(pluginVersion)) {
throw new KestraRuntimeException("Version " + pluginVersion + " not registered. Supported: " + versions);
} Try / catch
try {
factory.resolve(identifier, config);
} catch (KestraRuntimeException e) {
log.error("Plugin resolution failed: {}", e.getMessage());
// inspect 'Supported versions' in the message
} Prevention
- Omit the version qualifier unless a specific version is required.
- Verify the plugin JAR version matches the configured qualifier.
When it happens
Trigger: Configuring a plugin with a version qualifier (e.g., 'namespace:io.kestra.plugin.aws:1.2.0') that is not registered; the plugin JAR for the requested version is missing from the plugins directory; a plugin was downgraded/upgraded and the old version string is still referenced.
Common situations: Version mismatch after a plugin upgrade; stale config referencing a removed version; plugin JAR not installed or not loaded due to a classpath issue.
Related errors
- Failed to create %s '%s'. Error: %s
- Failed to validate configuration for %s '%s'. Error: %s
- Missing required options '--plugins' or environment variable
- Missing required options '--plugins' or environment variable
- Tenant id can only be 'main'
AI-assisted analysis of kestra-io/kestra@823fada927 (2026-08-14).
Data as JSON: /api/errors/2f01a7ad6e14bef4.
Report an issue: GitHub.