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

  1. Check the message's 'Supported versions' list and use one of those.
  2. Verify the plugin JAR for the requested version is in the Kestra plugins directory.
  3. Remove the explicit version qualifier to let Kestra pick the default registered version.
  4. 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

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


AI-assisted analysis of kestra-io/kestra@823fada927 (2026-08-14). Data as JSON: /api/errors/2f01a7ad6e14bef4. Report an issue: GitHub.