【问题标题】:Failed to start ElasticSearch - Could not find plugin class无法启动 ElasticSearch - 找不到插件类
【发布时间】:2016-04-26 23:39:26
【问题描述】:

我们有一个现有的基于 Java 的 ElasticSearch 自定义插件。我们现在升级到 ElasticSearch 2.1.1 并添加了 plugin-descriptor.properties 文件以指向我们的插件类。

之后,我们就可以安装我们的自定义插件了。但是当我们启动 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

【问题讨论】:

    标签: java elasticsearch elasticsearch-plugin


    【解决方案1】:

    可能是你把插件打包错了。

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

    【讨论】:

    • 是的,就是这样。将它们放入 zip 文件后,服​​务器启动正常。谢谢!
    • 糟糕,我也犯了同样的错误...谢谢!
    【解决方案2】:

    你确定你的类名应该是 com.symc.edp.elasticsearch.plugin.CustomEDPPlugins.class。最后的这个类部分似乎很奇怪。我猜你的类名是 com.symc.edp.elasticsearch.plugin.CustomEDPPlugins。另一件事……你能打开你构建的jar文件,看看里面是否有类com.symc.edp.elasticsearch.plugin.CustomEDPPlugins?

    【讨论】:

    • 更正了拼写错误,classname 属性末尾没有 .class。此外,我验证了该类文件存在于 jar 文件以及 elasticsearch plugins/edpCustomPlugins 目录下。
    • 我注意到的另一件事是它没有将 jar 与 plugin-descriptor.properties 文件一起复制。它正在炸毁 plugins/edpCustomPlugin 文件夹下的 jar。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多