{"record":{"id":"2f01a7ad6e14bef4","repo":"kestra-io/kestra","slug":"no-s-can-be-found-for-s-s-and-version-s-su","errorCode":null,"errorMessage":"No %s can be found for '%s=%s', and version=%s. Supported versions are: %s","messagePattern":"No (.+?) can be found for '(.+?)=(.+?)', and version=(.+?)\\. Supported versions are: (.+?)","errorType":"exception","errorClass":"KestraRuntimeException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/io/kestra/core/plugins/AbstractPluginInterfaceFactory.java","lineNumber":98,"sourceCode":"        final String pluginId = idAndVersion.getLeft();\n        final String pluginVersion = idAndVersion.getRight();\n\n        Optional<TypeAndId> optional = allTypes()\n            .filter(typeAndId -> Optional.ofNullable(typeAndId.id).map(id -> id.equalsIgnoreCase(pluginId)).orElse(false))\n            .findFirst();\n\n        if (optional.isEmpty()) {\n            throw notFoundException(pluginId);\n        }\n\n        // Find the corresponding plugin 'class'.\n        final String pluginType = optional.get().type();\n\n        Class<? extends Plugin> pluginClass = pluginRegistry\n            .findClassByIdentifier(pluginVersion == null ? pluginType : pluginType + \":\" + pluginVersion);\n        if (pluginClass == null) {\n            List<String> supportedVersions = pluginRegistry.getAllVersionsForType(pluginType);\n            throw new KestraRuntimeException(\n                \"No %s can be found for '%s=%s', and version=%s. Supported versions are: %s\".formatted(\n                    lookupDisplayName(), typeProperty(), pluginId, pluginVersion, supportedVersions\n                )\n            );\n        }\n\n        // Plugins are handled as any serializable/deserialize plugins.\n        T plugin;\n        try {\n            // Make sure config is not null, otherwise deserialization result will be null too.\n            Map<String, Object> nonEmptyConfig = Optional.ofNullable(pluginConfiguration).orElse(Map.of());\n            plugin = (T) JacksonMapper.toMap(nonEmptyConfig, pluginClass);\n        } catch (Exception e) {\n            throw new KestraRuntimeException(\n                String.format(\"Failed to create %s '%s'. Error: %s\", configDisplayName(), pluginId, e.getMessage())\n            );\n        }\n","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/kestra-io/kestra/blob/823fada9274c4f9c251ea0a516460a4f7d958032/core/src/main/java/io/kestra/core/plugins/AbstractPluginInterfaceFactory.java#L80-L116","documentation":"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.","triggerScenarios":"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.","commonSituations":"Version mismatch after a plugin upgrade; stale config referencing a removed version; plugin JAR not installed or not loaded due to a classpath issue.","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."],"exampleFix":"# before\nplugin: io.kestra.plugin.aws.s3.Upload:1.0.0   # not registered\n# KestraRuntimeException: Supported versions are: [2.0.0]\n\n# after\nplugin: io.kestra.plugin.aws.s3.Upload:2.0.0\n# or omit version\nplugin: io.kestra.plugin.aws.s3.Upload","handlingStrategy":"validation","validationCode":"List<String> versions = pluginRegistry.getAllVersionsForType(pluginType);\nif (pluginVersion != null && !versions.contains(pluginVersion)) {\n    throw new KestraRuntimeException(\"Version \" + pluginVersion + \" not registered. Supported: \" + versions);\n}","typeGuard":null,"tryCatchPattern":"try {\n    factory.resolve(identifier, config);\n} catch (KestraRuntimeException e) {\n    log.error(\"Plugin resolution failed: {}\", e.getMessage());\n    // inspect 'Supported versions' in the message\n}","preventionTips":["Omit the version qualifier unless a specific version is required.","Verify the plugin JAR version matches the configured qualifier."],"tags":["plugin","version","configuration","registry"],"backgroundTag":null,"analyzedSha":"823fada9274c4f9c251ea0a516460a4f7d958032","analyzedAt":"2026-08-14T06:15:17.947Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}