2011-12-06 47 views
3

我很新到Tomcat的servlet編碼,並且我得到這個錯誤:java.lang.NoClassDefFoundError:使用javax/servlet的/ HTTP/HttpServletRequest的

> 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); 
    } 
} 

回答

1

您使用的是哪個版本的Tomcat?你是使用與Tomcat一起發運的Servlet jar還是單獨下載它? servlet-api.jar應存在於Tomcat6/lib目錄內並且在Tomcat 5.5/common/lib/server/lib的內部。確保你沒有使用webapp /WEB-INF/lib中的服務器特定庫,否則會導致衝突

1

也許這是因爲你的CATALINA_HOME指向了lib文件夾。

1

我懷疑你的CATALINA_HOME環境變量是錯誤的。如果Tomcat安裝在 「C:\ Tomcat的」 目錄,那麼你應該使用值CATALINA_HOME = C:\tomcat

2

在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)

相關問題