首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clojure-solr-0.2.0和solr4

clojure-solr-0.2.0和solr4
EN

Stack Overflow用户
提问于 2012-05-19 04:51:08
回答 1查看 724关注 0票数 1

我正在尝试让clojure-solr-0.2.0与solr4 (主干每晚构建)一起工作。我得到了以下异常:

代码语言:javascript
复制
Caused by: java.lang.RuntimeException: Invalid version or the data in not in 'javabin' format
at org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:99)
at org.apache.solr.client.solrj.impl.BinaryResponseParser.processResponse(BinaryResponseParser.java:39)
at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:466)
at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:243)
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:89)

我假设这是因为clojure-solr使用了某个版本的solrj库,该库来自solr3代码库和不同版本之间更改的javabin格式。

有什么简单的方法可以让它工作吗?

编辑:

我从项目的lib文件夹中删除了solrj,并将其替换为lib/apache-solr-solrj-4.0-2012-05-15_08-20-37.jar。我希望这能正常工作,因为运行时在类路径上应该可以找到相同的类(传递依赖项应该只在运行lein deps以获取依赖项时才需要(或者我是这样推断的)。)结果是在运行时找不到类:

代码语言:javascript
复制
Caused by: java.lang.ClassNotFoundException:    org.apache.solr.client.solrj.impl.CommonsHttpSolrServer
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at clojure_solr$eval1423$loading__4414__auto____1424.invoke(clojure_solr.clj:1)
at clojure_solr$eval1423.invoke(clojure_solr.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:5424)
... 95 more

问题是CommonsHttpSolrServer不再存在于jar中:

代码语言:javascript
复制
$ jar tf lib/apache-solr-solrj-4.0-2012-05-15_08-20-37.jar |grep Http
org/apache/solr/client/solrj/impl/HttpSolrServer$1.class
org/apache/solr/client/solrj/impl/HttpSolrServer$2.class
org/apache/solr/client/solrj/impl/HttpSolrServer$3.class
org/apache/solr/client/solrj/impl/HttpSolrServer$DeflateDecompressingEntity.class
org/apache/solr/client/solrj/impl/HttpSolrServer$GzipDecompressingEntity.class
org/apache/solr/client/solrj/impl/HttpSolrServer$UseCompressionRequestInterceptor.class
org/apache/solr/client/solrj/impl/HttpSolrServer$UseCompressionResponseInterceptor.class
org/apache/solr/client/solrj/impl/HttpSolrServer.class
org/apache/solr/client/solrj/impl/LBHttpSolrServer$1.class
org/apache/solr/client/solrj/impl/LBHttpSolrServer$Req.class
org/apache/solr/client/solrj/impl/LBHttpSolrServer$Rsp.class
org/apache/solr/client/solrj/impl/LBHttpSolrServer$ServerWrapper.class
org/apache/solr/client/solrj/impl/LBHttpSolrServer.class
$ jar tf lib/apache-solr-solrj-4.0-2012-05-15_08-20-37.jar |grep CommonsHttp
$
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-19 05:46:23

您很可能需要构建自己的clojure-solr,并修复它以使用最新的solr4。这其实并不难。

the github project

  • lein中克隆
  • ,将其作为依赖项添加到您的主项目中
  • hack,然后重复。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10659574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档