2012-10-17 28 views
0

這裏是我的servlet類java.lang.NoClassDefFoundError:在Java servlet爲未來

package com.zaggle; 

import java.io.IOException; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class FirstServlet 
*/ 
public class FirstServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public FirstServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    String[] data;String val=null,name; 
    name=request.getParameter("excelsheet"); 
    System.out.println(name); 
     response.setContentType("text/html"); 
     UploadExcel ex= new UploadExcel(); 
     data=ex.procedure(name); 
    System.out.println(name); 

    request.setAttribute("val", data); 
    System.out.println(val); 

    String destination="/NewFile1.jsp"; 
    RequestDispatcher rd=getServletContext().getRequestDispatcher(destination); 
    //doGet(request, response); 
    rd.forward(request, response); 


} 

} 

這裏是我使用servlet類我的正常的Java類

package com.zaggle; 

import java.io.FileInputStream; 
import java.io.IOException; 
import java.util.Iterator; 
import java.util.Scanner; 
import java.util.Vector; 
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction; 
import org.apache.poi.hssf.record.formula.functions.Goto; 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.poifs.filesystem.POIFSFileSystem; 



public class UploadExcel { 
public String[] procedure(String filename) { 
    // Scanner scanner = new Scanner(System.in); 
     //System.out.println("Please enter a filename with extention to upload"); 

    String fileName = "C:\\"+filename;//+scanner.nextLine(); 
    String[] dataHolder = ReadCSV(fileName); 
    // printCellDataToConsole(dataHolder); 
    return dataHolder; 
} 

public static void printCellDataToConsole(Vector dataHolder) { 
    // TODO Auto-generated method stub 
    for(int i=0;i<dataHolder.size();i++) 
    { 
     Vector column=(Vector)dataHolder.elementAt(i); 
     for (int j = 0; j < column.size(); j++) { 
      HSSFCell myCell = (HSSFCell) column.elementAt(j); 
      String stringCellValue = myCell.toString(); 

      System.out.print(stringCellValue + "\t"); 
    } 
    System.out.println(); 

    } 
} 

public static String[] ReadCSV(String fileName) { 
    // TODO Auto-generated method stub 
    Vector cellVectorHolder = new Vector(); 
    String[] col = null; 
    try { 
     FileInputStream myInput = new FileInputStream(fileName); 

     POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); 

     HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); 

     HSSFSheet mySheet = myWorkBook.getSheetAt(0); 

     Iterator rowIter = mySheet.rowIterator(); 

     while (rowIter.hasNext()) { 
       HSSFRow myRow = (HSSFRow) rowIter.next(); 
       Iterator cellIter = myRow.cellIterator(); 
       Vector column = new Vector(); 
       while (cellIter.hasNext()) { 
         HSSFCell myCell = (HSSFCell) cellIter.next(); 
         column.addElement(myCell); 

       } 
        col=column.toString().split(" "); 
       cellVectorHolder.addElement(column); 
     } 
} catch(IOException ie) 
{ 
    System.err.println("Please enter a valid input"); 

} 
    catch (Exception e) { 
     e.printStackTrace(); 
} 
//return cellVectorHolder; 
    return col; 
} 

} 

當我跑我正在錯誤這樣

類型異常報告

消息

說明服務器遇到內部錯誤(),導致無法完成此請求。

例外

javax.servlet.ServletException:爲什麼我會得到這個錯誤的Servlet執行拋出異常

根源

java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/POIFSFileSystem 
com.zaggle.UploadExcel.ReadCSV(UploadExcel.java:52) 
com.zaggle.UploadExcel.procedure(UploadExcel.java:24) 
com.zaggle.FirstServlet.doPost(FirstServlet.java:42) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

。誰能幫我?

+0

那麼執行時所有的Apache POI庫在哪裏呢? –

+0

看起來您的項目中缺少一些Apache POI庫,或者至少在部署Web應用程序時缺少這些庫。 –

+0

@喬恩斯基特@ Luggi門多薩我已經在Java資料室 – JavaGuy

回答

3

看起來您已經忘記在CLASSPATH上包含POI庫(例如,它未被您的網絡應用引用)。您可以在WEB-INF/lib(以您的WAR存檔或分解目錄格式)中包含此庫,或者它可以位於您的應用程序的其他位置server/web服務器CLASSPATH

1

你所得到的例外,在這條線

POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); 

您正在嘗試使用未包含在你的項目庫。 確保import org.apache.poi庫在web-inf/lib目錄

1

你的POI罐子是不是在classpath.You可以包括在WEB-INF/lib這個庫。

另外檢查可能是您的jar版本與預期不同。

1

在WEB-INF/lib下確保apache-poi.jar

可選:根據您的Web服務器或應用程序服務器,將apache-poi.jar放入server-home/lib(取決於服務器)。這不是最好的解決方案。


注意

現在,你開發的Web應用程序,不使用特定的路徑上傳的文件(例如:C:\ ....)。如果是這樣,程序會在本地機器Web Server上找到上傳文件正在運行。首先,您必須將文件上傳爲byte[]InputStream或使用其他第三方庫。之後,您必須更改HSSFWorkbook

相關問題