2016-01-20 44 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