Failed to instantiate [org.elasticsearch.client.transport.TransportClient]

Springboot 集成 ElasticSearch,springboot报错如下:

Error starting ApplicationContext. To display the  auto-configuration report re-run your application with  'debug' enabled.
2019-05-15 09:06:40.948 ERROR 15032 --- [  restartedMain]  o.s.boot.SpringApplication               : Application  startup failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name  'elasticsearchDemoController': Unsatisfied dependency  expressed through field 'client'; nested exception is  org.springframework.beans.factory.BeanCreationException:  Error creating bean with name 'getTransportClient'  defined in class path resource  [cn/xdf/springboot/config/ESConfig.class]: Bean  instantiation via factory method failed; nested exception  is org.springframework.beans.BeanInstantiationException:  Failed to instantiate  [org.elasticsearch.client.transport.TransportClient]:  Factory method 'getTransportClient' threw exception;  nested exception is java.lang.NoClassDefFoundError:  org/apache/logging/log4j/Logger
     at  org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)  ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)  ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
     at  org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)  [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
     at  org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)  [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
     at  org.springframework.boot.SpringApplication.run(SpringApplication.java:303)  [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
     at  org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)  [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
     at  org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)  [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
     at  cn.xdf.springboot.Application.main(Application.java:18)  [classes/:na]
     at  sun.reflect.NativeMethodAccessorImpl.invoke0(Native  Method) ~[na:1.8.0_65]
     at  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_65]
     at  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_65]
     at java.lang.reflect.Method.invoke(Method.java:497)  ~[na:1.8.0_65]
     at  org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)  [spring-boot-devtools-1.5.9.RELEASE.jar:1.5.9.RELEASE]
Caused by:  org.springframework.beans.factory.BeanCreationException:  Error creating bean with name 'getTransportClient'  defined in class path resource  [cn/xdf/springboot/config/ESConfig.class]: Bean  instantiation via factory method failed; nested exception  is org.springframework.beans.BeanInstantiationException:  Failed to instantiate  [org.elasticsearch.client.transport.TransportClient]:  Factory method 'getTransportClient' threw exception;  nested exception is java.lang.NoClassDefFoundError:  org/apache/logging/log4j/Logger
     at  org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)  ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     ... 24 common frames omitted
Caused by:  org.springframework.beans.BeanInstantiationException:  Failed to instantiate  [org.elasticsearch.client.transport.TransportClient]:  Factory method 'getTransportClient' threw exception;  nested exception is java.lang.NoClassDefFoundError:  org/apache/logging/log4j/Logger
     at  org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     at  org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
     ... 36 common frames omitted
当我按elasticsearch老版本2.x(2.4.6)引用maven文件时,如下:
Failed to instantiate [org.elasticsearch.client.transport.TransportClient]
org.elasticsearch.client低版本 报找不到getTransportClient()
这是由于elasticsearch从5.x开始才有该新的jar包,需要引用如下(我引入的是5.2.2):
          <dependency>
              <groupId>org.elasticsearch</groupId>
              <artifactId>elasticsearch</artifactId>
              <version>5.2.2</version>
          </dependency>

另外,elasticsearch 5.x中需要log4j的一些依赖,需要添加,在pom.xml中添加如下maven配置:

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.7</version>
        </dependency>

 

再次启动springboot成功。

(后面发现,由于我的elasticsearch是Windows-6.2.2版的,而对于的elasticsearch需要至少5.6.0版,虽然springboot启动正常,但上面引入的5.2.2会导致elasticsearch-6.2.2-Windows 后台报错!)

 

 
 
posted @ 2019-05-15 11:25  仰望星空的脚踏实地  阅读(4525)  评论(0编辑  收藏  举报