无法实例化接口 'ElasticsearchClient'
Cannot instantiate interface 'ElasticsearchClient'
official Elasticsearch docs 告诉我们像这样实例化 ElasticsearchClient
:
ElasticsearchClient client = new ElasticsearchClient(transport);
在我的 Grails 3 应用程序中使用 Gradle 构建管理编写此代码后,出现以下编译错误:Cannot instantiate interface 'ElasticsearchClient'
import
语句为:import org.elasticsearch.client.ElasticsearchClient
。
事实上,ElasticsearchClient
被解决为:
package org.elasticsearch.client;
// ...
public interface ElasticsearchClient {
Gradle 依赖项是:compile 'org.elasticsearch:elasticsearch:7.17.2'
- 为什么他们建议在他们的文档中实例化一个接口?
- 如何让它编译并使用 Elasticsearch 客户端?
原因是:ElasticsearchClient
是 mis-resolved 一个旧的 elasticsearch JAR 文件,它仍然在我本地用户的 .gradle
目录中。从 .gradle
中删除旧 JAR 使我能够进行正确的导入。
正确的导入是
import co.elastic.clients.elasticsearch.ElasticsearchClient
代替
import org.elasticsearch.client.ElasticsearchClient
official Elasticsearch docs 告诉我们像这样实例化 ElasticsearchClient
:
ElasticsearchClient client = new ElasticsearchClient(transport);
在我的 Grails 3 应用程序中使用 Gradle 构建管理编写此代码后,出现以下编译错误:Cannot instantiate interface 'ElasticsearchClient'
import
语句为:import org.elasticsearch.client.ElasticsearchClient
。
事实上,ElasticsearchClient
被解决为:
package org.elasticsearch.client;
// ...
public interface ElasticsearchClient {
Gradle 依赖项是:compile 'org.elasticsearch:elasticsearch:7.17.2'
- 为什么他们建议在他们的文档中实例化一个接口?
- 如何让它编译并使用 Elasticsearch 客户端?
原因是:ElasticsearchClient
是 mis-resolved 一个旧的 elasticsearch JAR 文件,它仍然在我本地用户的 .gradle
目录中。从 .gradle
中删除旧 JAR 使我能够进行正确的导入。
正确的导入是
import co.elastic.clients.elasticsearch.ElasticsearchClient
代替
import org.elasticsearch.client.ElasticsearchClient