Java 名称列表<;对象>;抛出类强制转换异常
我想形成一个NamedList对象,如下所示:Java 名称列表<;对象>;抛出类强制转换异常,java,collections,Java,Collections,我想形成一个NamedList对象,如下所示: response={numFound=57279026,start=0,docs=[SolrDocument{timestamp_update=Thu Jan 01 01:00:00 CET 1970}]}} 当我这样做的时候,当我的代码试图访问结果时,我得到了一个抛出的异常:SolrDocumentList results=response.getResults() 我应该如何创建NamedList,以便它不会引发异常 以下是我的做法: Nam
response={numFound=57279026,start=0,docs=[SolrDocument{timestamp_update=Thu Jan 01 01:00:00 CET 1970}]}}
当我这样做的时候,当我的代码试图访问结果时,我得到了一个抛出的异常:SolrDocumentList results=response.getResults()代码>
我应该如何创建NamedList,以便它不会引发异常
以下是我的做法:
NamedList nl=new SimpleOrderedMap();
私有静态映射solrDocumentMap=newhashmap();
put(“timestamp\u update”,timestamp\u update);
solrDocument=新的solrDocument(solrDocumentMap);
solrDocumentList.add(solrDocument);
nl.添加(“numFound”、“57279026”);
nl.添加(“开始”、“0”);
nl.添加(“文档”,解决方案文档列表);
NamedList nl1=新的NamedList(Collections.singletonMap(“response”,nl));
response.setResponse(nl1);
这里是QueryResponse的内置类,它将对SolarDocument进行响应
public void setResponse(NamedList res){
super.setResponse(res);
对于(int i=0;i
我终于找到了解决方案,希望这对大家都有帮助。我从Solr得到了XML格式的响应,读取文件并用XMLResponseParser解析它。不知何故,JsonParser不适用于Solar,如果您使用java反序列化,Solr中存在一个不兼容的bug
这也适用于查询响应类的内部类型转换
受保护的QueryResponse getResponse(字符串文件名)引发IOException{
Path Path=Path.get(resDir+“/”+文件名);
InputStream主体=新文件InputStream(path.toFile());
NamedList结果=processResponse(正文,null);
QueryResponse response=新的QueryResponse();
response.setResponse(结果);
返回响应;
}
私有名称列表processResponse(InputStream主体,对象o){
XMLResponseParser=新的XMLResponseParser();
NamedList result=parser.processResponse(主体,“UTF-8”);
返回结果;
}
**java.lang.ClassCastException: org.apache.solr.common.util.SimpleOrderedMap cannot be cast to org.apache.solr.common.SolrDocumentList**