控制台:
Exception in thread “main” org.apache.solr.client.solrj.beans.BindingException:
Could not instantiate object of class com.SH.Rest.Pojo.Solr_pojo
异常产生经过:
在使用SolrJ时,调用SolrClient对象的addBean()方法以及QueryResponse对象的getBeans()方法时,抛出异常。
1 | solrClient.addBean(pojo); |
异常全文:
Exception in thread “main” org.apache.solr.client.solrj.beans.BindingException: Could not instantiate object of class com.SH.Rest.Pojo.Solr_pojo
at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getBean(DocumentObjectBinder.java:71)
at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getBeans(DocumentObjectBinder.java:50)
at org.apache.solr.client.solrj.response.QueryResponse.getBeans(QueryResponse.java:646)
at com.SH.Rest.Service.serviceImpl.SearchServiceImpl.query(SearchServiceImpl.java:32)
at com.SH.Rest.Service.serviceImpl.SearchServiceImpl.main(SearchServiceImpl.java:41)
Caused by: java.lang.InstantiationException: com.SH.Rest.Pojo.Solr_pojo
at java.lang.Class.newInstance(Class.java:427)
at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getBean(DocumentObjectBinder.java:65)
… 4 more
Caused by: java.lang.NoSuchMethodException: com.SH.Rest.Pojo.Solr_pojo.()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
… 5 more
Disconnected from the target VM, address: ‘127.0.0.1:1331’, transport: ‘socket’
Process finished with exit code 1
解决方法:
无法实例化对象,可能是因为属性类型不匹配,要仔细检查对象类与solr域的类型是否对应,是否做好转换,另外还需检查有无空构造器,以及setter&getter参数类型是否有误。
样例
下面给出我当时改后的pojo类与solr域的示例。
- Solr_pojo类
1 | package com.SH.Rest.Pojo; |
- managed-schema,solr域配置
1 | <!-- <field name="solr_id" type="plong" stored="true" required="true" indexed="false" /> --> |