halo-dev/halo · error · PluginRuntimeException
Unable to find plugin descriptor file '{}'
Error message
Unable to find plugin descriptor file '{}' What it means
Error "Unable to find plugin descriptor file '{}'" thrown in halo-dev/halo.
Source
Thrown at application/src/main/java/run/halo/app/plugin/YamlPluginFinder.java:99
throw new PluginRuntimeException("Cannot find the plugin manifest path");
}
log.debug("Lookup plugin descriptor in '{}'", propertiesPath);
if (Files.notExists(propertiesPath)) {
throw new PluginRuntimeException("Cannot find '{}' path", propertiesPath);
}
Resource propertyResource = new FileSystemResource(propertiesPath);
return unstructuredToPlugin(propertyResource);
} finally {
FileUtils.closePath(propertiesPath);
}
}
protected Plugin unstructuredToPlugin(Resource propertyResource) {
YamlUnstructuredLoader yamlUnstructuredLoader = new YamlUnstructuredLoader(propertyResource);
List<Unstructured> unstructuredList = yamlUnstructuredLoader.load();
if (unstructuredList.size() != 1) {
throw new PluginRuntimeException("Unable to find plugin descriptor file '{}'", propertiesFileName);
}
Unstructured unstructured = unstructuredList.get(0);
return Unstructured.OBJECT_MAPPER.convertValue(unstructured, Plugin.class);
}
protected Path getManifestPath(Path pluginPath, String propertiesFileName) {
if (Files.isDirectory(pluginPath)) {
for (String location : PLUGIN_CLASSPATH.getClassesDirectories()) {
var path = pluginPath.resolve(location).resolve(propertiesFileName);
Resource propertyResource = new FileSystemResource(path);
if (propertyResource.exists()) {
return path;
}
}
throw new PluginRuntimeException("Unable to find plugin descriptor file: " + DEFAULT_PROPERTIES_FILE_NAME);
} else {
// it's a jar file
try {View on GitHub (pinned to d2f5165f9c)
Solutions
- Add a plugin.yaml (or plugin.yml) descriptor file at the root of the plugin JAR or directory.
- Rebuild the plugin with the Halo plugin Gradle/Maven tooling so the descriptor is generated and packaged.
- Check that the descriptor file name matches exactly (plugin.yaml), including case.
When it happens
Trigger: Thrown at application/src/main/java/run/halo/app/plugin/YamlPluginFinder.java:99 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of halo-dev/halo@d2f5165f9c (2026-08-14).
Data as JSON: /api/errors/601889d79765c42c.
Report an issue: GitHub.