Elasticsearch вызывает java.lang.LinkageError с помощью javax / servlet / FilterConfig на Tomcat 7

1

Я использую Elasticsearch 1.1.1, java клиентские и серверные версии - то же самое. Единичные тесты работают нормально. когда я запускаю сервер tomcat, он имеет:

java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/FilterConfig"

и до этой ошибки было много следующего:

2014-05-02 15:07:03,954 DEBUG o.e.plugins [localhost-startStop-1] [Corsair] [D:\eclipse-indigo\plugins\org.python.pydev.jython_2.7.0.2012080220\_site] directory does not exist.

многие из них и с разными папками

если я удалю код, использующий elasticsearch и сохраняющий зависимость в pom.xml, сервер начнет нормально работать. WEB-INF/lib и мой TOMCAT_HOME/lib приложений не имеют servlet-api.jar, его только в TOMCAT_HOME/lib

часть, которую я установил для клиента es, выглядит следующим образом:

if (this.client == null) {

    this.client = new TransportClient(ImmutableSettings.settingsBuilder().
            put("cluster.name", this.cluster).build());

    final String[] addresses = this.hosts.split(",");

    for (final String address : addresses) {

        final String trimmed = address.trim();
        final String[] tuple = trimmed.split(":");
        this.client.addTransportAddress(
                new InetSocketTransportAddress(tuple[0].trim(), Integer.valueOf(tuple[1].trim())));

    }

}

Этот же код используется для модульных тестов и проходит все тесты.

Любой указатель очень ценится.

Это, похоже, актуально, но не было надлежащего решения.

Ошибка связи при использовании клиента Elasticsearch в Spring WebApp

FYI, я также использую Spring & Spring MVC 4.2.5.RELEASE, Tomcat версии 7.0.40

ОБНОВИТЬ:

Благодаря этой ссылке http://lexxweb.co.uk/blog/?p=66, оказывается, что это один из плагинов eclipse, который загружает другую сервлет-api-версию версии, в результате чего LinkageError я получаю.

  • 0
    Вы удаляете только банку с elsaticsearch или перестраиваете свою войну без зависимости? Похоже, у вас есть другая версия servlet-api который как-то тянет.
  • 0
    Я только удаляю код, который используетasticsearch, сохраняя зависимость в моем classpath, и сервер запускается нормально.
Показать ещё 1 комментарий
Теги:
spring
tomcat
elasticsearch

1 ответ

4
Лучший ответ

Благодаря этой ссылке http://lexxweb.co.uk/blog/?p=66, оказывается, что это один из плагинов eclipse, который загружает другую сервлет-api-версию версии, в результате чего LinkageError я получаю. После удаления плагина все хорошо сейчас

Ещё вопросы

Сообщество Overcoder
Наверх
Меню