{"record":{"id":"3aed34734b8aabff","repo":"halo-dev/halo","slug":"problemdetail-plugin-version-unsatisfied-requires","errorCode":"problemDetail.plugin.version.unsatisfied.requires","errorMessage":"Plugin requires a minimum system version of [%s], but the current version is [%s].","messagePattern":"Plugin requires a minimum system version of \\[(.+?)\\], but the current version is \\[(.+?)\\]\\.","errorType":"http","errorClass":"UnsatisfiedAttributeValueException","httpStatus":400,"severity":"error","filePath":"application/src/main/java/run/halo/app/plugin/PluginServiceImpl.java","lineNumber":487,"sourceCode":"                    plugin.getStatus().setLoadLocation(loadLocation.toUri());\n                    var annotations = plugin.getMetadata().getAnnotations();\n                    if (annotations == null) {\n                        annotations = new HashMap<>();\n                        plugin.getMetadata().setAnnotations(annotations);\n                    }\n                    annotations.put(PluginConst.PLUGIN_PATH, loadLocation.toString());\n                });\n    }\n\n    private void satisfiesRequiresVersion(Plugin newPlugin) {\n        Assert.notNull(newPlugin, \"The plugin must not be null.\");\n        Version version = systemVersion.get();\n        // validate the plugin version\n        // only use the nominal system version to compare, the format is like MAJOR.MINOR.PATCH\n        String systemVersion = version.toStableVersion().toString();\n        String requires = newPlugin.getSpec().getRequires();\n        if (!VersionUtils.satisfiesRequires(systemVersion, requires)) {\n            throw new UnsatisfiedAttributeValueException(\n                    String.format(\n                            \"Plugin requires a minimum system version of [%s], but the current version is \" + \"[%s].\",\n                            requires, systemVersion),\n                    \"problemDetail.plugin.version.unsatisfied.requires\",\n                    new String[] {requires, systemVersion});\n        }\n    }\n\n    private Flux<PresetPlugin> getPresetPlugins() {\n        var resolver = new PathMatchingResourcePatternResolver();\n        try {\n            var presetPluginOptions = loadPresetPluginOptions(resolver);\n            var resources = resolver.getResources(PRESETS_LOCATION_PATTERN);\n            return Flux.fromArray(resources).mapNotNull(resource -> {\n                var filename = resource.getFilename();\n                if (StringUtils.isBlank(filename)) {\n                    return null;\n                }","sourceCodeStart":469,"sourceCodeEnd":505,"githubUrl":"https://github.com/halo-dev/halo/blob/d2f5165f9c8f055ffcb3fa9c3f4032821a7b68c8/application/src/main/java/run/halo/app/plugin/PluginServiceImpl.java#L469-L505","documentation":"Error \"Plugin requires a minimum system version of [%s], but the current version is [%s].\" thrown in halo-dev/halo.","triggerScenarios":"Thrown at application/src/main/java/run/halo/app/plugin/PluginServiceImpl.java:487 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Upgrade Halo to at least the minimum version required by the plugin (the first version shown in the message).","Or install an older version of the plugin whose 'requires' constraint matches the current Halo version.","Plugin developers: verify the 'spec.requires' field in plugin.yaml is not set higher than intended."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d2f5165f9c8f055ffcb3fa9c3f4032821a7b68c8","analyzedAt":"2026-08-14T00:18:38.915Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}