Servlets java.lang.NoClassDefFoundError:org/apache/solr/client/solrj/impl/HttpSolrServer

Servlets java.lang.NoClassDefFoundError:org/apache/solr/client/solrj/impl/HttpSolrServer,servlets,solr,Servlets,Solr,我试图使用solrj执行从servlet到solr的查询,但我面临着问题,很明显,没有找到HttpSolrServer类,我不知道为什么。下面是我的servlet代码 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub Ht

我试图使用solrj执行从servlet到solr的查询,但我面临着问题,很明显,没有找到HttpSolrServer类,我不知道为什么。下面是我的servlet代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub

      HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr");
        SolrQuery query = new SolrQuery();
        QueryResponse QueryResponse;
        try {
        QueryResponse = server.query(query);
         SolrDocumentList results = QueryResponse.getResults();
         System.out.println("hello2");
          for (int i = 0; i < results.size(); ++i) {
            System.out.println(results.get(i));

          }
    } catch (SolrServerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//TODO自动生成的方法存根
HttpSolrServer服务器=新的HttpSolrServer(“http://localhost:8983/solr");
SolrQuery query=新的SolrQuery();
QueryResponse QueryResponse;
试一试{
QueryResponse=server.query(查询);
SolrDocumentList results=QueryResponse.getResults();
System.out.println(“hello2”);
对于(int i=0;i

提前感谢

您需要确保在web服务器的lib文件夹中部署solrj(或将其包含在war的web-INF lib文件夹中)。您遇到的错误是因为在执行代码时,它找不到solrj。

您的Servlet位于一个web应用程序中,该应用程序部署在给定的Servlet引擎/应用程序服务器下


现在,您的web应用程序有一个web-INF/lib文件夹,其中包含所有必需的依赖项(即JAR)。您应该从Solr发行版获取solrj及其所有依赖项,并将它们全部放在WEB-INF/lib文件夹中

抱歉,我仍然有点困惑。如何将solrj部署到web服务器中?我目前正在使用solr-solrj-4.10.3.jar。我需要设置环境路径等吗?我看到一些指南告诉我要这样做并设置maven..但是因为我使用的是jar文件,所以我不必经过这些,对吗?我没有语法错误,但在运行时它返回HttpSolrServer not found错误。您的Web服务器是什么?雄猫?JBoss?码头?您的任何web服务器都有一个“lib”目录。例如,C:\apache-tomcat-8.0.18\lib。您必须将JAR复制到该文件夹中。您遇到的错误是,您的代码在编译时可以看到JAR(我猜是在Eclipse这样的IDE中),但在运行它时,它再也看不到您的JAR了。Maven可以让您将SolrjJAR打包到您的可部署工件(WAR)中,这样您就不必将它放在Web服务器的lib目录中。两种方法都有效。