NoClassDefFoundError:antlr/RecognitionException在servlet中,但在普通java程序中工作

NoClassDefFoundError:antlr/RecognitionException在servlet中,但在普通java程序中工作,java,jsp,servlets,antlr,noclassdeffounderror,Java,Jsp,Servlets,Antlr,Noclassdeffounderror,在我下面的servlet类中,我在tomcat服务器中部署时得到了一些NoClassDefFoundError:antlr/RecognitionException和NoClassDefFoundError:antlr/TokenStreamException。带*的星号线是导致它的原因。当我评论这些行时,它很容易部署。我已经在eclipse的构建路径中包含了必要的.jar文件 基本上,在下面的Servlet中,我想从web调用我的java程序。当我从控制台使用Java代码时,它不会给出任何错误

在我下面的servlet类中,我在tomcat服务器中部署时得到了一些NoClassDefFoundError:antlr/RecognitionException和NoClassDefFoundError:antlr/TokenStreamException。带*的星号线是导致它的原因。当我评论这些行时,它很容易部署。我已经在eclipse的构建路径中包含了必要的.jar文件

基本上,在下面的Servlet中,我想从web调用我的java程序。当我从控制台使用Java代码时,它不会给出任何错误,并且运行得很好。对于我的大多数外部包含的jar文件,catalina.out迫切需要NoClassDefFound。我是否遗漏了一些东西,或者对于Servlet,我必须指定一些关于外部jar类的地方

提前谢谢

package i2r.hlt.iris;

import i2r.hlt.iris.utils.JSenti;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.antlr.v4.runtime.RecognitionException;

import antlr.TokenStreamException;



import es.upv.nlel.utils.FileIO;

public class UserInputServlet extends HttpServlet {

@Override
public void init(ServletConfig config) throws ServletException {
    ServletContext context = config.getServletContext();
    homeJsp = context.getRequestDispatcher("/WEB-INF/jsp/iris.jsp");

    ....

    ret.setIndexPath(index_path);

    try {
        ret.loadUtts();
        ret.loadDlgs();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

private RequestDispatcher homeJsp, userInput;
private Retrieval ret;

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {


    String input = req.getParameter("user");
    req.setAttribute("message", input);

    homeJsp.forward(req, resp);
}

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException{


    String input = req.getParameter("user");

    List<String> list = new ArrayList<String>();
    list.add(input);

    Add add = new Add();
    String out = null;

/*******            try {
*****           out = "IRIS: " + FileIO.fileToString(new File(ret.uttMap.get(ret.selectBestUtt(list))));
*****           } catch (antlr.RecognitionException e) {
*****               throw new ServletException(e);
*****           }catch (TokenStreamException e) {
*****           throw new ServletException(e);
*****           }*/

    req.setAttribute("message", out);
    homeJsp.forward(req, resp);
}
}
包i2r.hlt.iris;
导入i2r.hlt.iris.utils.JSenti;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletConfig;
导入javax.servlet.ServletContext;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入org.antlr.v4.runtime.RecognitionException;
导入antlr.TokenStreamException;
导入es.upv.nlel.utils.FileIO;
公共类UserInputServlet扩展了HttpServlet{
@凌驾
public void init(ServletConfig config)抛出ServletException{
ServletContext=config.getServletContext();
homeJsp=context.getRequestDispatcher(“/WEB-INF/jsp/iris.jsp”);
....
ret.setIndexPath(索引路径);
试一试{
ret.loadUtts();
ret.loadDlgs();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
私有RequestDispatcher homeJsp,userInput;
私人检索;
受保护的无效数据集(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException{
字符串输入=req.getParameter(“用户”);
请求设置属性(“消息”,输入);
homeJsp.forward(请求、响应);
}
受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException{
字符串输入=req.getParameter(“用户”);
列表=新的ArrayList();
列表。添加(输入);
添加=新添加();
String out=null;
/*******试一试{
*****out=“IRIS:+FileIO.fileToString(新文件(ret.uttMap.get(ret.selectBestUtt(list)));
*****}catch(antlr.RecognitionException e){
*****抛出新的ServletException(e);
*****}catch(TokenStreamException e){
*****抛出新的ServletException(e);
*****           }*/
请求设置属性(“消息”,输出);
homeJsp.forward(请求、响应);
}
}

您需要将ANTLR v2库放在Tomcat的lib文件夹中(参见注释)。Java在特定目录中搜索库。您想要使用的库必须位于Java/Tomcat可以找到的其中一个目录中

如果希望Eclipse自动部署依赖项,这可能会有所帮助:


您需要将ANTLR v2库放在Tomcat的lib文件夹中(参见注释)。Java在特定目录中搜索库。您想要使用的库必须位于Java/Tomcat可以找到的其中一个目录中

如果希望Eclipse自动部署依赖项,这可能会有所帮助:


将antlr-2.x.x.x.jar放在web inf/lib或tomcat/shared/libPerfect中。。我就是这么做的,解决了我的问题。。谢谢将antlr-2.x.x.x.jar放在web inf/lib或tomcat/shared/libPerfect中。。我就是这么做的,解决了我的问题。。谢谢是的,谢谢。在WEB-INF中创建了“lib”目录,并复制了其中的所有.jar文件,并解决了错误。谢谢,是的,谢谢。在WEB-INF中创建了“lib”目录,并复制了其中的所有.jar文件,并解决了错误。谢谢