{"record":{"id":"9114555ce2aa7517","repo":"halo-dev/halo","slug":"unable-to-find-plugin-descriptor-file-plugin-yaml","errorCode":null,"errorMessage":"Unable to find plugin descriptor file: plugin.yaml","messagePattern":"Unable to find plugin descriptor file: plugin\\.yaml","errorType":"exception","errorClass":"PluginRuntimeException","httpStatus":null,"severity":"error","filePath":"application/src/main/java/run/halo/app/plugin/YamlPluginFinder.java","lineNumber":114,"sourceCode":"        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);\n        }\n        Unstructured unstructured = unstructuredList.get(0);\n        return Unstructured.OBJECT_MAPPER.convertValue(unstructured, Plugin.class);\n    }\n\n    protected Path getManifestPath(Path pluginPath, String propertiesFileName) {\n        if (Files.isDirectory(pluginPath)) {\n            for (String location : PLUGIN_CLASSPATH.getClassesDirectories()) {\n                var path = pluginPath.resolve(location).resolve(propertiesFileName);\n                Resource propertyResource = new FileSystemResource(path);\n                if (propertyResource.exists()) {\n                    return path;\n                }\n            }\n            throw new PluginRuntimeException(\"Unable to find plugin descriptor file: \" + DEFAULT_PROPERTIES_FILE_NAME);\n        } else {\n            // it's a jar file\n            try {\n                return FileUtils.getPath(pluginPath, propertiesFileName);\n            } catch (IOException e) {\n                throw new PluginRuntimeException(e);\n            }\n        }\n    }\n}\n","sourceCodeStart":96,"sourceCodeEnd":125,"githubUrl":"https://github.com/halo-dev/halo/blob/d2f5165f9c8f055ffcb3fa9c3f4032821a7b68c8/application/src/main/java/run/halo/app/plugin/YamlPluginFinder.java#L96-L125","documentation":"Error \"Unable to find plugin descriptor file: plugin.yaml\" thrown in halo-dev/halo.","triggerScenarios":"Thrown at application/src/main/java/run/halo/app/plugin/YamlPluginFinder.java:114 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Place a plugin.yaml file at the root of the plugin archive or development directory.","If developing locally, run the plugin build so plugin.yaml is generated from the build configuration.","Verify the plugin path passed to Halo is the plugin root, not a subdirectory."],"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"}