Не удалось запустить ElasticSearch - Не удалось найти класс плагина
У нас есть существующий плагин на основе Java для ElasticSearch. Теперь мы обновились до ElasticSearch 2.1.1 и добавили файлы plugin-descriptor.properties, чтобы они указывали на наш класс плагинов.
После этого мы смогли установить наш собственный плагин. Но когда мы запускаем сервис ElasticSearch, он не может найти этот пользовательский плагин. Мы убедились, что файл класса находится в каталоге /usr/share/asticsearch/plugins/.
Ниже приведена трассировка стека исключений:
[2016-01-20 13:13:48,527][ERROR][bootstrap] Exception
ElasticsearchException[Could not find plugin class [com.symc.edp.elasticsearch.plugin.CustomEDPPlugins]]; nested: ClassNotFoundException[com.symc.edp.elasticsearch.plugin.CustomEDPPlugins];
at org.elasticsearch.plugins.PluginsService.loadPluginClass(PluginsService.java:382)
at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:348)
at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:109)
at org.elasticsearch.node.Node.<init>(Node.java:146)
at org.elasticsearch.node.Node.<init>(Node.java:128)
at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:145)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:178)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
Caused by: java.lang.ClassNotFoundException: com.symc.edp.elasticsearch.plugin.CustomEDPPlugins
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:814)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.elasticsearch.plugins.PluginsService.loadPluginClass(PluginsService.java:380)
... 8 more
[2016-01-20 13:22:55,236][INFO ][node ] [localhost] version[2.1.1], pid[20680], build[40e2c53/2015-12-15T13:05:55Z]
[2016-01-20 13:22:55,237][INFO ][node ] [localhost] initializing ...
[2016-01-20 13:22:55,840][ERROR][bootstrap ] Exception
ElasticsearchException[Could not find plugin class [com.symc.edp.elasticsearch.plugin.CustomEDPPlugins.class]]; nested: ClassNotFoundException[com.symc.edp.elasticsearch.plugin.CustomEDPPlugins.class];
at org.elasticsearch.plugins.PluginsService.loadPluginClass(PluginsService.java:382)
at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:348)
at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:109)
at org.elasticsearch.node.Node.<init>(Node.java:146)
at org.elasticsearch.node.Node.<init>(Node.java:128)
at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:145)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:178)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
Caused by: java.lang.ClassNotFoundException: com.symc.edp.elasticsearch.plugin.CustomEDPPlugins.class
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:814)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.elasticsearch.plugins.PluginsService.loadPluginClass(PluginsService.java:380)
... 8 more
Ниже приводится содержание нашего plugin-descriptor.properties
description=EDP Custom Plugins
version=${project.version}
name=edpCustomPlugins
jvm=true
site=false
classname=com.symc.edp.elasticsearch.plugin.CustomEDPPlugins
java.version=${java.specification.version}
elasticsearch.version=2.1.1
2 ответа
Возможно, вы неправильно упаковали плагин.
Возможно, вы пытаетесь установить файл jar со скомпилированными классами вместо установки файла zip, который содержит как файл jar, так и файл plugin-descriptor.properties.
Вы уверены, что ваше имя класса должно быть com.symc.edp.elasticsearch.plugin.CustomEDPPlugins.class. Эта часть класса в конце кажется странной. Я предполагаю, что ваше имя класса com.symc.edp.elasticsearch.plugin.CustomEDPPlugins. Другое дело... можете ли вы открыть созданный вами jar-файл и посмотреть, есть ли внутри класс com.symc.edp.elasticsearch.plugin.CustomEDPPlugins?