gri*_*rdo 4 java spring elasticsearch
我在SpringBoot应用程序中创建HighEndRestClient bean时遇到错误.我已经完成了一个测试'app',我检查了我可以实例化我想要的对象,然后拨打我想要的电话,现在我正在制作新的应用程序.
我在pom中有这些依赖项
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>5.6.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>5.6.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我已经在配置类中编写了这个非常基本的代码,但是这个代码没有做太多
@Configuration
@PropertySource(value = "classpath:application.properties")
@EnableElasticsearchRepositories(basePackages = "com.indexbuilder.es.repo")
public class ElasticsearchConfiguration {
@Value("${elasticsearch.host}")
private String EsHost;
@Value("${elasticsearch.port}")
private int EsPort;
@Value("${elasticsearch.clustername}")
private String EsClusterName;
@Bean
public RestClientBuilder coreBuilder() throws Exception {
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));
builder.setMaxRetryTimeoutMillis(10000);
builder.setFailureListener(new RestClient.FailureListener() {
@Override
public void onFailure(HttpHost host) {
System.out.println("FAILURE !!!! FailureListener HAS WOKEN UP!!!! CREATYE A FAILURE LISTENER BEAN" );
}
});
return builder;
}
@Bean
public RestClient restLowLevelClient() throws Exception{
RestClient restClient = coreBuilder().build();
return restClient;
}
Run Code Online (Sandbox Code Playgroud)
就我所见,这个工作正常(我还没有做太多...)
当我添加这个(最初我传入RestClient bean但现在我暂时创建一个本地对象以获得更清晰)
@Bean
public RestHighLevelClient restHighLevelClient() throws Exception{
RestClient restClient = coreBuilder().build();
RestHighLevelClient client = new RestHighLevelClient(restClient);
return client;
}
Run Code Online (Sandbox Code Playgroud)
我得到这个java.lang.NoClassDefFoundError错误
========= | _ | ============== | ___/=///_/:: Spring Boot ::(v1.5.1.RELEASE)
[警告] sun.reflect.DelegatingMethodAccessorImpl.invoke上的sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)中的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)中的java.lang.reflect.InvocationTargetException(DelegatingMethodAccessorImpl.java: 43)java.lang.Tev中的java.lang.reflect.Method.invoke(Method.java:498)org.springframework.boot.maven.AbstractRunMojo $ LaunchRunner.run(AbstractRunMojo.java:527)at java.lang.Thread.run(Thread .java:745)引起:org.springframework.beans.factory.BeanCreationException:在类路径资源[com/indexbuilder/configuration/ElasticsearchConfiguration.class]中定义名称为'restHighLevelClient'的bean创建错误:通过工厂方法进行Bean实例化失败; 嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.elasticsearch.client.RestHighLevelClient]:工厂方法'restHighLevelClient'抛出异常; 嵌套异常是org.springframework.beans.factory.support中的org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:598)中的java.lang.NoClassDefFoundError:org/elasticsearch/action/main/MainRequest. AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1140)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1034)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java: 525)在org.springframework的org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:304)的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482). beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingl etonBeanRegistry.java:230)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)at org位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)的.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:744)org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:542)位于org.springframework的org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737).在org.spring的org.springframework.boot.SpringApplication.run(SpringApplication.java:314)的boot.SpringApplication.refreshContext(SpringApplication.java:370)framework.boot.SpringApplication.run(SpringApplication.java:1162)位于org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)的com.indexbuilder.SpringBootStartUpConfig.main(SpringBootStartUpConfig.java:84)... 6更多由以下原因引起:org.springframework.beans.BeanInstantiationException:无法实例化[org.elasticsearch.client.RestHighLevelClient]:工厂方法'restHighLevelClient'抛出异常; 嵌套异常是org.springframework.beans.factory.support中的org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)中的java.lang.NoClassDefFoundError:org/elasticsearch/action/main/MainRequest. ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587)... 24更多引起:java.lang.NoClassDefFoundError:org/elasticsearch/action/main/MainRequest at com.indexbuilder.configuration.ElasticsearchConfiguration.restHighLevelClient(ElasticsearchConfiguration.java:95) at com.indexbuilder.configuration.ElasticsearchConfiguration $$ EnhancerBySpringCGLIB $$ 62f74d9a.CGLIB $ restHighLevelClient $ 1()at com.indexbuilder.configuration.ElasticsearchConfiguration $$ EnhancerBySpringCGLIB $$ 62f74d9a $$ FastClassBySpringCGLIB $$ 2b29ad7b.invoke()at org.springframework. org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept(C)中的cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)onfigurationClassEnhancer.java:358)at.indexbuilder.configuration.ElasticsearchConfiguration $$ EnhancerBySpringCGLIB $$ 62f74d9a.restHighLevelClient()at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62 )atg.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.)中的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498). java:162)... 25更多引起:java.lang.ClassNotFoundException:org.elasticsearch.action.main.MainRequest at java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass (ClassLoader.java:424)java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 36更多
谁能指出我正确的方向?
您可能还需要核心依赖项:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
A NoClassDefFoundError通常是配置错误 - 这意味着您使用的代码引用了某个类,但类本身不在类路径中.在这种情况下,这也可能是相关Elasticsearch poms本身中的依赖关系管理错误,因为它们应该包含所需的类 - 但除了可能提出问题之外,您可以做的事情并不多.
| 归档时间: |
|
| 查看次数: |
4415 次 |
| 最近记录: |