当我在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)
有人可以解释我们如何摆脱这个显然非常奇怪的错误。
答案 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!!!