# Проблема с плагином в es2.0

**URL:** <https://discuss.elastic.co/t/es2-0/26407>\
**Category:** Вопросы на русском языке\
**Created:** [July 28, 2015, 10:30am UTC](https://discuss.elastic.co/t/es2-0/26407 "2015-07-28T10:30:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dimous](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@Dimous](https://discuss.elastic.co/u/Dimous)\
**Post date:** [July 28, 2015, 10:30am UTC](https://discuss.elastic.co/t/es2-0/26407/1 "2015-07-28T10:30:50Z")

</div>

Здравствуйте  
Я написал плагин импорта данных, который регистрируется как REST-сервис. Совсем недавно ввели проверку plugin-descriptor.properties.

Я создал дескриптор:

jvm = true  
site = false  
version = 1.0  
classname = io.github.dimous.plugins.ImportPlugin  
description = xxx import  
java.version = 1.8  
elasticsearch.version = 2.0.0-beta1-SNAPSHOT

es-plugin.properties:

plugin = io.github.dimous.plugins.ImportPlugin

При запуске в консоль выбрасываются исключения:

[2015-07-28 19:56:32,025][WARN][plugins] [Overmind] failed to  
load plugin from [[]]  
ElasticsearchException[Failed to load plugin class [io.github.dimous.plugins.ImportPlugin]]; nested: ClassNotFoundException[io.github.dimous.plugins.ImportPlugin];  
at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.ja  
va:408)  
at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.j  
ava:377)  
at org.elasticsearch.plugins.PluginsService.(PluginsService.java:1  
08)  
at org.elasticsearch.node.Node.(Node.java:147)  
at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:157)  
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:176)  
at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:277)  
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:28)

Caused by: java.lang.ClassNotFoundException: io.github.dimous.plugins.ImportPlugin  
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)  
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)  
at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:810)  
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)  
at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.ja  
va:393)  
... 7 more

Также писал в дескрипторе просто "ImportPlugin", без полного имени - та же ошибка.  
До ввода файла дескриптора, плагин работал.

package io.github.dimous.plugins;

import io.github.dimous.plugins.rest.ImportRestHandler;  
import org.elasticsearch.plugins.AbstractPlugin;  
import org.elasticsearch.rest.RestModule;

public final class ImportPlugin extends AbstractPlugin {  
@Override  
public String name() {  
return "import plugin";  
}  
//---

```
@Override
public String description() {
    return "Сервис импорта данных из ";
}
//---

public void onModule(final RestModule rest_module) {
    rest_module.addRestAction(ImportRestHandler.class);
} 

```

}

ImportRestHandler лежит в своём пакете, расширяет BaseRestHandler. Короче, всё по канонам.  
Запускаю под Win 8.1 64  
Сейчас слил свежий снепшот, собрал, пересобрал и переустановил плагин, проблема сохранилась.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 28, 2015, 3:55pm UTC](https://discuss.elastic.co/t/es2-0/26407/2 "2015-07-28T15:55:08Z")

</div>

Сложно так что-то сказать. Я попробовал ваш дескриптор с одним из моих плагинов - все вроде работает как положено. Вы не могли бы выложить проект где-нибудь, который демонстрировал бы проблему?

---

<div class="post-metadata">

**Author:** ![Dimous](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@Dimous](https://discuss.elastic.co/u/Dimous)\
**Post date:** [July 29, 2015, 11:49am UTC](https://discuss.elastic.co/t/es2-0/26407/3 "2015-07-29T11:49:47Z")

</div>

Здравствуйте, Игорь

Для чистоты эксперимента я удалил логику. Скомпилировал и установил. Проблема повторилась - значит логика тут ни при чём.

[http://dimous.github.io/demo/plugin-descriptor.properties](http://dimous.github.io/demo/plugin-descriptor.properties)  
[http://dimous.github.io/demo/es-plugin.properties](http://dimous.github.io/demo/es-plugin.properties)

[http://dimous.github.io/demo/io/github/dimous/plugins/ImportPlugin.java](http://dimous.github.io/demo/io/github/dimous/plugins/ImportPlugin.java)  
[http://dimous.github.io/demo/io/github/dimous/plugins/rest/ImportRestHandler.java](http://dimous.github.io/demo/io/github/dimous/plugins/rest/ImportRestHandler.java)

[http://dimous.github.io/demo/ImportPlugin.jar](http://dimous.github.io/demo/ImportPlugin.jar)

Устанавливаю командой - D:\elasticsearch-2.0.0-beta1-SNAPSHOT\bin\plugin install ImportPlugin -u file:////C:\Users\*\*\*\*.ivy2\Desktop\ImportPlugin\dist\ImportPlugin.jar

В папке плагинов появляется папка ImportPlugin.  
Хочу ещё раз подчеркнуть - плагин работал на снепшоте 2.0.0-beta1 до версии с плагин-дескриптором. Буквально каждый день сливал изменения, собирал и проверял.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 29, 2015, 12:12pm UTC](https://discuss.elastic.co/t/es2-0/26407/4 "2015-07-29T12:12:51Z")

</div>

А что происходит если убрать `es-plugin.properties` и `plugin-descriptor.properties` из `ImportPlugin.jar` и поместить `plugin-descriptor.properties` в `ImportPlugin.zip` архив? То есть `ImportPlugin.zip` должен содержать два файла: `ImportPlugin.jar` и `plugin-descriptor.properties`, и устанавливть надо будет `ImportPlugin.zip`.

---

<div class="post-metadata">

**Author:** ![Dimous](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@Dimous](https://discuss.elastic.co/u/Dimous)\
**Post date:** [July 29, 2015, 12:19pm UTC](https://discuss.elastic.co/t/es2-0/26407/5 "2015-07-29T12:19:49Z")

</div>

Ура!  
Заработало!  
Спасибо!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 1:51pm UTC](https://discuss.elastic.co/t/es2-0/26407/6 "2017-07-06T13:51:32Z")

</div>


