現在、elasticsearchの検索部分を構築しているのですが、
java.lang.NoClassDefFoundError: org/elasticsearch/transport/client/PreBuiltTransportClient
が発生しています。
PreBuiltTransportClientのjarについては、
gradle経由で、ダウンロードずみで、
エディタ上でエラーはありません。
どなたか、解決方法など、分かりましたら、
ご教授いただけないでしょうか?
例外が発生するタイミングとしては、
別クラスから、下記のように初期化したタイミングです。
ElasticsearchGateway gateway = new ElasticsearchGateway();
- ElasticsearchGateway.javaのロジックについては、下記になります。
Settings settings = Settings.builder(). put("cluster.name", "clusterName").build(); TransportClient clients = new PreBuiltTransportClient(settings); for (String address : "hostName".split(",")) { HostAndPort hp = HostAndPort.fromString(address); String hostName = hp.getHostText(); int port = hp.getPort(); try { clients.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostName),port)); } catch (UnknownHostException e) { throw new RuntimeException("host名が不正です"); } }
試してみたこと
↑のロジックをもとに、mainメソッドを利用し、
testExecuteからElasticConnectをnewし、TransportClientを取得したところ、
NoClassDefFoundErrorは起きませんでした。
- testExecute.java(mainメソッドがあるクラス)
- ElasticConnect.java(TransportClientを生成するクラス)
環境
- Java8
- eclipse Version: Neon.1a Release (4.6.1)
- tomcat 8
- build.gradleに記載のver
compile group: 'org.elasticsearch', name: 'elasticsearch', version: '5.1.1'
compile group: 'org.elasticsearch.client', name: 'transport', version: '5.1.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.8.2'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.8.2'
- Elasticsearch ver 5.3.1
あなたの回答
tips
プレビュー