2

我是 Solr 和 maven 的新手,我想制作一个小型应用程序,通过 SolrJ 索引我的所有数据库表。
为此,我查看了他们使用 MAVEN的本教程。
我安装了库和罐子(Maven除外),但我有这个例外:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpRequestInterceptor

我查看了教程,发现要解决此问题,我们需要将其添加到我的 Maven 配置中:

org.slf4j slf4j-simple 1.5.6

无论如何,没有maven可以做到这一点吗?谢谢

4

2 回答 2

2

使用行家。即使有了它,我也花了相当多的时间来获得正确的依赖关系。教程都有些欠缺。下面是我的 pom.xml 以及我在 Maven 中引入的相关依赖项。也许它会对你有所帮助。

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-core</artifactId>
    <version>4.3.0</version>
</dependency>
<dependency>
    <artifactId>solr-solrj</artifactId>
    <groupId>org.apache.solr</groupId>
    <version>4.3.0</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
于 2013-06-07T21:44:10.017 回答
0

Maven 是Solrj的建议构建技术,因为它可以自动管理 3rd 方依赖项。如果没有依赖管理,破译这些关系是一件非常痛苦的事情(Jar hell)。

我可以建议使用 ivy,它具有命令行模式

首先下载 ivy jar

要检索以下 Maven 模块及其所有依赖项:

    <dependency>
           <artifactId>solr-solrj</artifactId>
           <groupId>org.apache.solr</groupId>
           <version>1.4.0</version>
           <type>jar</type>
           <scope>compile</scope>
    </dependency>

然后按如下方式运行:

 java -jar ivy.jar \
      -dependency org.apache.solr solr-solrj 1.4.0 \
      -retrieve "lib/[artifact]-[revision](-[classifier]).[ext]" \
      -confs default

检索到 lib 目录:

lib/commons-httpclient-3.1.jar
lib/wstx-asl-3.2.7.jar
lib/slf4j-api-1.5.5.jar
lib/commons-codec-1.3.jar
lib/stax-api-1.0.1.jar
lib/geronimo-stax-api_1.0_spec-1.0.1.jar
lib/commons-logging-1.0.4.jar
lib/solr-solrj-1.4.0.jar
lib/commons-io-1.4.jar
lib/commons-fileupload-1.2.1.jar

更新

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpRequestInterceptor

这是由于缺少 httpcore.jar 文件。我通过浏览 Maven Central 发现了这一点:

使用“slf4j-simple”的建议是提供一种日志实现,以防您的应用程序没有日志实现。

最后......这证明了我想说的。在没有依赖管理工具(ivygroovyMaven)的情况下,您只能靠自己来破译第 3 方 jar 依赖项。

于 2013-01-22T16:46:34.950 回答