Solrj NoClassDefFoundError

时间:2015-10-03 01:20:49

标签: java maven tomcat solr

我使用Solr在数据库上执行搜索。我在我的pom.xml中添加了以下依赖项,但它没有用。

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>5.3.1</version>
</dependency>

我遇到了运行时错误java.lang.NoClassDefFoundError: 组织/阿帕奇/ solr的/普通/ PARAMS / SolrParams

我通过将整个库放在WEB-INF / lib文件夹下来解决这个问题。然而,它让我困惑为什么maven依赖不起作用。 我使用的是tomcat 8.0。

1 个答案:

答案 0 :(得分:0)

应用程序中引用的所有jar(库)应该在运行时在应用程序的库路径中可用。在您的POM中,您已经定义了所使用的所有库或包。 POM的默认存储库是~/.m2/respository,它保留所有引用jar。

现在你需要在朗姆酒时间提供它们。对任何应用程序执行mvn clean install时,默认情况下它只打包应用程序源代码而不是所有库。这些被称为Thin jar's,因为它们只包含应用程序代码和轻量级。

要在运行时访问它们,您需要创建一个Fat jar,它将捆绑POM文件中定义的所有jar,或者您需要将它们添加到应用程序lib路径。

通过将它们放入WEB-INF/lib,您将所有jar添加到应用程序li​​b路径中,这是tomcat的默认lib路径。