{"record":{"id":"529753d4d600d0f9","repo":"halo-dev/halo","slug":"cannot-find-the-plugin-manifest-path","errorCode":null,"errorMessage":"Cannot find the plugin manifest path","messagePattern":"Cannot find the plugin manifest path","errorType":"exception","errorClass":"PluginRuntimeException","httpStatus":null,"severity":"error","filePath":"application/src/main/java/run/halo/app/plugin/YamlPluginFinder.java","lineNumber":81,"sourceCode":"    @Override\n    public Plugin find(Path pluginPath) {\n        Plugin plugin = readPluginDescriptor(pluginPath);\n        if (plugin.getStatus() == null) {\n            Plugin.PluginStatus pluginStatus = new Plugin.PluginStatus();\n            pluginStatus.setPhase(Plugin.Phase.PENDING);\n            pluginStatus.setLoadLocation(pluginPath.toUri());\n            plugin.setStatus(pluginStatus);\n        }\n        MetadataUtil.nullSafeAnnotations(plugin).put(PluginConst.PLUGIN_PATH, pluginPath.toString());\n        return plugin;\n    }\n\n    protected Plugin readPluginDescriptor(Path pluginPath) {\n        Path propertiesPath = null;\n        try {\n            propertiesPath = getManifestPath(pluginPath, propertiesFileName);\n            if (propertiesPath == null) {\n                throw new PluginRuntimeException(\"Cannot find the plugin manifest path\");\n            }\n\n            log.debug(\"Lookup plugin descriptor in '{}'\", propertiesPath);\n            if (Files.notExists(propertiesPath)) {\n                throw new PluginRuntimeException(\"Cannot find '{}' path\", propertiesPath);\n            }\n            Resource propertyResource = new FileSystemResource(propertiesPath);\n            return unstructuredToPlugin(propertyResource);\n        } finally {\n            FileUtils.closePath(propertiesPath);\n        }\n    }\n\n    protected Plugin unstructuredToPlugin(Resource propertyResource) {\n        YamlUnstructuredLoader yamlUnstructuredLoader = new YamlUnstructuredLoader(propertyResource);\n        List<Unstructured> unstructuredList = yamlUnstructuredLoader.load();\n        if (unstructuredList.size() != 1) {\n            throw new PluginRuntimeException(\"Unable to find plugin descriptor file '{}'\", propertiesFileName);","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/halo-dev/halo/blob/d2f5165f9c8f055ffcb3fa9c3f4032821a7b68c8/application/src/main/java/run/halo/app/plugin/YamlPluginFinder.java#L63-L99","documentation":"Error \"Cannot find the plugin manifest path\" thrown in halo-dev/halo.","triggerScenarios":"Thrown at application/src/main/java/run/halo/app/plugin/YamlPluginFinder.java:81 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the plugin is packaged as a JAR containing plugin.yaml (or plugin.yml) at its root, or provide the path to an unpacked plugin directory.","Verify the file being installed is actually a plugin JAR and not a corrupted or wrong file.","If installing from a directory, point Halo at the directory that directly contains the plugin manifest."],"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"}