はじめに
Solrjを使っていてエラーになったときの対処方法を備忘録としてまとめておきます。順次増えていくかも。
SolrServerを初期化する際のエラー
一般的にSolrServerを初期化する際には以下のコードになります。
SolrServerSample.java
import java.io.IOException;
import org.apache.solr.client.solrj.*;
import org.apache.solr.client.solrj.impl.*;
public class SolrServerSample {
public static void main(String[] args) throws SolrServerException, IOException {
String url = "http://localhost:8983/solr/exampleCore";
SolrClient solr = new HttpSolrClient.Builder(url).build(); // ※1 SolrServerを初期化する部分
}
}
上記※1の部分で発生するエラーをまとめます。
クラスが見つからない
具体的には以下のようなエラーです。
- java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient
- java.lang.NoClassDefFoundError: org/apache/http/Header
- java.lang.NoClassDefFoundError: org/apache/http/entity/mime/content/ContentBody
- java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
必要なjarファイルがビルドパスに含まれていない可能性があります。予めダウンロードしていると思われる、solr6.x.xフォルダ内の、dist -> solrj-lib フォルダにある以下のjarをビルドパスに含めてください。(xはバージョン番号)
- httpclient-x.x.x.jar
- httpcore-x.x.x.jar
- httpmime-x.x.x.jar
- slf4j-api-x.x.x.jar
slf4j関連
具体的には以下のようなエラーです。
- Failed to load class "org.slf4j.impl.StaticLoggerBinder".
- org.apache.solr.common.SolrException: Unable to create HttpClient instance.
slf4jのダウンロードページから最新のslf4jをダウンロードし、中にある以下のjarファイルをビルドパスに追加してください。(xはバージョン番号)
- slf4j-api-x.x.x.jar
- slf4j-simple-x.x.x.jar
- jcl-over-slf4j-x.x.x.jar
なお、すでに上述のjarが存在していた場合は一旦除去して、最新のものに入れ替えてください。
SolrInputDocumentを生成する際のエラー
SolrDocumentSample.java
import java.io.IOException;
import org.apache.solr.client.solrj.*;
import org.apache.solr.client.solrj.impl.*;
public class SolrDocumentSample {
public static void main(String[] args) throws SolrServerException, IOException {
String url = "http://localhost:8983/solr/exampleCore";
SolrClient solr = new HttpSolrClient.Builder(url).build();
SolrInputDocument document = new SolrInputDocument(); // ※2 SolrInputDocumentを生成する部分
}
}
上記※2の部分で発生するエラーをまとめます。
クラスが見つからない
具体的には以下のようなエラーです。
- java.lang.NoClassDefFoundError: org/noggit/CharArr
必要なjarファイルがビルドパスに含まれていない可能性があります。予めダウンロードしていると思われる、solr6.x.xフォルダ内の、dist -> solrj-lib フォルダにある以下のjarをビルドパスに含めてください。(xはバージョン番号)
- noggit-x.x.jar