【问题标题】:java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest [duplicate]java.lang.NoClassDefFoundError:javax/servlet/http/HttpServletRequest [重复]
【发布时间】:2012-01-14 08:14:02
【问题描述】:

我对 Tomcat servlet 编码非常陌生,我收到了这个错误:

> java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
-> `servlet-api.jar` is in lib `tomcat_root/lib` dirctory 

CATALINA_HOME = C:\tomcat\lib\;
JAVA_HOME = C:\Program Files\Java\jdk1.7.0_01
Path = ....;%JAVA_HOME%\bin;%JAVA_HOME%;...

我很困惑,因为javac 正在编译代码而没有任何错误。

这是我正在使用的代码 - 你能说出导致错误的原因吗?我不能。

package com.life;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class Task10 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, java.io.IOException {
        try {
            response.setContentType("text/html");
            java.io.PrintWriter out = response.getWriter();

            File destinationDir;
            String realPath = getServletContext().getRealPath("/files");
            destinationDir = new File(realPath);
            DiskFileItemFactory  fileItemFactory = new DiskFileItemFactory ();
            ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
            if (ServletFileUpload.isMultipartContent(request)) {
                List items = uploadHandler.parseRequest(request);
            }
            out.println(ServletFileUpload.isMultipartContent(request));
            out.println(realPath);
            out.close();
        }
        catch(Exception ex) {
            log("Error encountered while uploading file",ex);
        }


    }


    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response) throws ServletException,
        java.io.IOException {
        doGet(request, response);
    }
}

【问题讨论】:

    标签: java tomcat servlets noclassdeffounderror


    【解决方案1】:

    在 CMD 中试试这个

    SET CATALINA_HOME = C:\Program Files\Apache Software Foundation\Tomcat 7.0;C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib;

    (在当前版本 TOMCAT 7.0 中)

    【讨论】:

      【解决方案2】:

      可能是因为你的 CATALINA_HOME 指向 lib 文件夹。

      【讨论】:

        【解决方案3】:

        我怀疑你的 CATALINA_HOME 环境变量是错误的。如果tomcat安装在“c:\tomcat”目录,那么你应该使用值CATALINA_HOME = C:\tomcat

        【讨论】:

          【解决方案4】:

          您使用的是什么版本的 Tomcat?您是在使用随 Tomcat 一起提供的 Servlet jar,还是单独下载了它? servlet-api.jar 应该出现在 Tomcat6 上的 /lib 目录中以及 /common/libTomcat 5.5 上的 /server/lib 中。确保您没有在 webapp /WEB-INF/lib 中使用特定于服务器的库,否则会导致冲突

          【讨论】:

            猜你喜欢
            • 2015-04-04
            • 2023-04-08
            • 2018-08-29
            • 2023-04-05
            • 1970-01-01
            • 2018-05-16
            • 1970-01-01
            • 2016-03-27
            • 2012-04-19
            相关资源
            最近更新 更多