运行时异常:无效版本(预期为2,但为60)或solr中的数据不是'javabin'格式

时间:2014-07-04 06:43:57

标签: java solr runtimeexception

当我在localhost上执行以下简单调用ping我的solr时,我收到运行时异常。

public static void main(String[] args) throws SolrServerException, IOException
    {
        String url = "http://127.0.0.1:8983/solr/#";
        HttpSolrServer solrServer = new HttpSolrServer(url);
        solrServer.ping();

    }

例外日志是:

Exception in thread "main" java.lang.RuntimeException: Invalid version (expected 2, but     60) or the data in not in 'javabin' format
    at org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:109)
    at         org.apache.solr.client.solrj.impl.BinaryResponseParser.processResponse(BinaryResponseParser.    java:41)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:407)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:180)
    at org.apache.solr.client.solrj.request.SolrPing.process(SolrPing.java:69)
    at org.apache.solr.client.solrj.SolrServer.ping(SolrServer.java:293)
    at com.tradus.LocalSolrDataAdd.main(LocalSolrDataAdd.java:26)

有人可以解释我们如何摆脱这个显然非常奇怪的错误。

3 个答案:

答案 0 :(得分:3)

以下是与您的stacktrace匹配的代码版本:

代码似乎试图检查对" ping"的响应的版本号。请求。您的Solr客户端收到的回复是它无法理解的。而我的猜测是,某些内容已经错误配置......或者您给它提供了错误的网址。

获得版本号&#34; 60&#34;而不是&#34; 2&#34;似乎不太可能我的猜测是&#34; 60&#34;实际上是一个<字符...这告诉我你有一些XML或HTML而不是二进制响应。在后一种情况下,它可能是应用程序容器中的一个页面,告诉您它不了解您的请求......或者其他内容。

我建议您检查服务器日志文件以查看它获得的请求。如果失败,请尝试捕获进出客户端的网络流量。

答案 1 :(得分:0)

通常是因为solr客户端和solr服务器之间的版本不同。

答案 2 :(得分:0)

使用const vueLoaderConfig = require('./vue-loader.conf') module: { rules: [ ... { test: /\.vue$/, loader: 'vue-loader', options: vueLoaderConfig }, ... } 是错误的:

#

这应该是正确的用法:

String url = "http://127.0.0.1:8983/solr/#";//  [#] is wrong!!!