2016-01-20 184 views
0

我们有一个基于Java的ElasticSearch定制插件。我们现在升级到ElasticSearch 2.1.1并添加plugin-descriptor.properties文件以指向我们的插件类。无法启动ElasticSearch - 无法找到插件类

之后,我们能够安装我们的自定义插件。但是当我们启动ElasticSearch服务时,它无法找到这个自定义插件。我们验证了该类文件存在于/ usr/share/elasticsearch/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 

回答

1

这可能是你打包错误的插件。

也许你正在尝试安装带有编译类的jar文件,而不是安装包含jar文件和plugin-descriptor.properties文件的zip文件。

+0

是的,情况就是这样。将它们放入一个zip文件后,服​​务器启动正常。谢谢! – Sau

+0

哎呀,我在做同样的错误......谢谢! – Tanny

0

你确定你的类名应该是com.symc.edp .elasticsearch.plugin.CustomEDPPlugins.class。最后这个类的部分看起来很奇怪。我想你的类名是com.symc.edp.elasticsearch.plugin.CustomEDPPlugins。另一件事...你可以打开你已经建立的jar文件,看看里面是否有类com.symc.edp.elasticsearch.plugin.CustomEDPPlugins?

+0

更正了错字,在classname属性的末尾没有.class。 另外,我验证了类文件既存在于jar文件中,也存在于elasticsearch plugins/edpCustomPlugins目录下。 – Sau

+0

我注意到的另一件事是它不是复制jar和plugin-descriptor.properties文件。它是爆炸plugins/edpCustomPlugin文件夹下的jar。 – Sau