Я использую REST-клиент ElasticSearch в Android Studio для соединения с ElasticSearch, функция работает в Maven Project, но не работает в Android Studio. Ошибка: java .lang.ExceptionInInitializerError. Причина: java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .security.CodeSource java .security.ProtectionDomain.getCodeSource ()' для нулевого объекта. ссылка на org.elasticsearch.Build.getElasticsearchCodeSourceLocation (Build. java: 194)
Gradle
dependencies {
api 'com.loopj.android:android-async-http:1.4.9'
api 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.6.2'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:design:28.0.0'
}
Основная активность:
Button buttonRequest = (Button) findViewById(R.id.get);
buttonRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost("localhost", 9201, "http")
));
//build search request
SearchRequest searchRequest = new SearchRequest("logstash-2020.03.12-000001");
searchRequest.types("_doc");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchQuery("time", "Mar 8 12:05:10"));
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = null;
try {
searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
StringBuffer ids = new StringBuffer();
String idlast = ids.toString();
int vertexCount = 3;
ArrayList<ArrayList> fullArray = new ArrayList<>(vertexCount);
for (int i = 0; i < vertexCount; i++) {
fullArray.add(new ArrayList());
}
for (SearchHit hit : searchHits) {
fullArray.get(0).add((String) hit.getSourceAsMap().get("time"));
fullArray.get(1).add((String) hit.getSourceAsMap().get("loghost"));
fullArray.get(2).add((String) hit.getSourceAsMap().get("syslog_process"));
}
String str = fullArray.toString();
Toast.makeText(MainActivity.this, "Hello!"+str, Toast.LENGTH_SHORT).show();
}
});
Любая помощь, пожалуйста. .. !!!