Exception in thread "main" java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET

Hi, I am trying to index a row in my database in solr from my java application. I have added the necessary banks, but I keep getting this error. My solr schema is correct, and I make a request, just add a new row to my database, and I want it to be indexed as well

Here is the error

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET at org.apache.http.impl.client.DefaultHttpClient.setDefaultHttpParams(DefaultHttpClient.java:175) at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:158) at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:448) at org.apache.solr.client.solrj.impl.HttpClientUtil.setFollowRedirects(HttpClientUtil.java:223) at org.apache.solr.client.solrj.impl.HttpClientConfigurer.configure(HttpClientConfigurer.java:58) at org.apache.solr.client.solrj.impl.HttpClientUtil.configureClient(HttpClientUtil.java:115) at org.apache.solr.client.solrj.impl.HttpClientUtil.createClient(HttpClientUtil.java:105) at org.apache.solr.client.solrj.impl.HttpSolrServer.<init>(HttpSolrServer.java:155) at org.apache.solr.client.solrj.impl.HttpSolrServer.<init>(HttpSolrServer.java:128) at tan.indexSolr.<init>(indexSolr.java:195) at tan.indexSolr.main(indexSolr.java:51) 

Here is my code

  public class indexSolr { private Connection conn = null; private static HttpSolrServer server; private Collection docs = new ArrayList(); private int _totalSql = 0; private long _start = System.currentTimeMillis(); public static void main(String[] args) throws SolrServerException, IOException, SQLException { String url = "http://localhost:8983/solr/db"; indexSolr idxer = new indexSolr(url); idxer.doSqlDocuments(); idxer.endIndexing(); } private void doSqlDocuments() throws SQLException { try { Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection( "jdbc:postgresql://localhost:5432/biz_cat", "postgres", "pos"); java.sql.Statement st = null; st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from pl_biz order by id DESC LIMIT 1"); while (rs.next()) { SolrInputDocument doc = new SolrInputDocument(); Integer id = rs.getInt("id"); String name = rs.getString("name"); String midname = rs.getString("midname"); String lastname = rs.getString("lastname"); String frlsname = rs.getString("frlsname"); String biz_subject = rs.getString("biz_subject"); String company_type = rs.getString("company_type"); String obshtina = rs.getString("obshtina"); String main_office_town = rs.getString("main_office_town"); String address = rs.getString("address"); String role = rs.getString("role"); String country = rs.getString("country"); String nace_code = rs.getString("nace_code"); String nace_text = rs.getString("nace_text"); String zip_code = rs.getString("zip_code"); String phone = rs.getString("phone"); String fax = rs.getString("fax"); String email = rs.getString("email"); String web = rs.getString("web"); String location = rs.getString("location"); String geohash = rs.getString("geohash"); Integer popularity = rs.getInt("popularity"); doc.addField("id", id); doc.addField("name", name); doc.addField("midname", midname); doc.addField("lastname", lastname); doc.addField("frlsname", frlsname); doc.addField("biz_subject", biz_subject); doc.addField("company_type", company_type); doc.addField("obshtina", obshtina); doc.addField("main_office_town", main_office_town); doc.addField("address", address); doc.addField("role", role); doc.addField("country", country); doc.addField("nace_code", nace_code); doc.addField("nace_text", nace_text); doc.addField("zip_code", zip_code); doc.addField("phone", phone); doc.addField("fax", fax); doc.addField("email", email); doc.addField("web", web); doc.addField("location", location); doc.addField("geohash", geohash); doc.addField("popularity", popularity); docs.add(doc); ++_totalSql; if (docs.size() > 1) { // Commit within 5 minutes. UpdateResponse resp = server.add(docs); System.out.println (resp); if (resp.getStatus() != 0) { log("Some horrible error has occurred, status is: " + resp.getStatus()); } docs.clear(); } } } catch (Exception ex) { ex.printStackTrace(); } finally { if (conn != null) { conn.close(); } } } private void endIndexing() throws IOException, SolrServerException { if (docs.size() > 0) { // Are there any documents left over? server.add(docs, 300000); // Commit within 5 minutes } try { server.commit(); } catch (Exception ex) { ex.printStackTrace(); } long endTime = System.currentTimeMillis(); log("Total Time Taken: " + (endTime - _start) + " milliseconds to index " + _totalSql + " SQL rows" ); } private static void log(String msg) { System.out.println(msg); } private indexSolr(String url) throws IOException, SolrServerException { // Create a multi-threaded communications channel to the Solr server. try { server = new HttpSolrServer(url); server.setSoTimeout(1000); // socket read timeout server.setConnectionTimeout(1000); server.setMaxRetries(1); } catch (Exception ex) { ex.printStackTrace(); } } } 
+6
source share
1 answer

This answer was taken from a comment, by @Pace, April 20th, 2013

I marked this as a publication on the community wiki, as advised by the Unanswered Question, but the problem was resolved in the comments .


NoSuchFieldError is almost always thrown by incompatible versions.

What version of HttpClient do you have? Do you use Maven? Is it possible that you have multiple versions of HttpClient?
Check out these things and you should find the answer.

+1
source

All Articles