client: Don't crash when outdated plugins are trying to load

This commit is contained in:
Owain van Brakel
2020-06-18 15:20:54 +02:00
parent ca4e84114e
commit bf7b4e2a8f

View File

@@ -503,6 +503,12 @@ public class ExternalPluginManager
{ {
//noinspection unchecked //noinspection unchecked
plugininst = instantiate(scannedPlugins, (Class<Plugin>) pluginClazz, init, initConfig); plugininst = instantiate(scannedPlugins, (Class<Plugin>) pluginClazz, init, initConfig);
if (plugininst == null)
{
return;
}
scannedPlugins.add(plugininst); scannedPlugins.add(plugininst);
} }
catch (PluginInstantiationException e) catch (PluginInstantiationException e)
@@ -654,6 +660,11 @@ public class ExternalPluginManager
{ {
throw new PluginInstantiationException(ex); throw new PluginInstantiationException(ex);
} }
catch (NoClassDefFoundError ex)
{
log.error("Plugin {} is outdated", clazz.getSimpleName());
return null;
}
log.debug("Loaded plugin {}", clazz.getSimpleName()); log.debug("Loaded plugin {}", clazz.getSimpleName());
return plugin; return plugin;
@@ -712,6 +723,8 @@ public class ExternalPluginManager
private List<Plugin> loadPlugin(String pluginId) private List<Plugin> loadPlugin(String pluginId)
{ {
List<Plugin> scannedPlugins = new ArrayList<>(); List<Plugin> scannedPlugins = new ArrayList<>();
try
{
List<Plugin> extensions = externalPluginManager.getExtensions(Plugin.class, pluginId); List<Plugin> extensions = externalPluginManager.getExtensions(Plugin.class, pluginId);
for (Plugin plugin : extensions) for (Plugin plugin : extensions)
{ {
@@ -746,6 +759,11 @@ public class ExternalPluginManager
scannedPlugins.add(plugin); scannedPlugins.add(plugin);
} }
}
catch (NoClassDefFoundError ex)
{
log.error("plugin {} is outdated", pluginId);
}
return scannedPlugins; return scannedPlugins;
} }