2016-11-09 87 views
0

我創建代碼用struts 2.下載PDF,但是當我運行它,它會拋出異常......爲什麼Struts檢測到未處理的異常?

的Struts已經檢測到一個未處理的異常:

消息:

org.apache.commons.logging.LogFactory 
org/apache/commons/logging/LogFactory 

文件:組織/阿帕奇/卡塔利娜/裝載機/ WebappClassLoaderBase.java

行號:1,313

這裏是我的代碼快照...在那裏我遇到了例外...

public String execute() throws Exception { 
    try { 
     if (submit.equals("pdf")) { 
      rs = new ReportDAO().getPdf(); 
      jasperPath = ServletActionContext.getServletContext().getRealPath("/Reports"); 
      pdfName = "Studnet Report"; 
      rpt = "studentReport.jrxml"; 
    // I got error at this line.... 
      JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(rs); 
      HashMap<String, Object> pm = new HashMap<String, Object>(); 
      String logo = jasperPath + "/ws.jpg"; 
      pm.put("logo", logo); 
      JasperReport jr = JasperCompileManager.compileReport(jasperPath + "/" + rpt); 
      System.out.println("ok"); 
      JasperPrint jp = JasperFillManager.fillReport(jr, pm, resultSetDataSource); 
      JasperExportManager.exportReportToPdfFile(jp, jasperPath + pdfName + ".pdf"); 
      fileInputStream = new FileInputStream(new File(jasperPath + pdfName + ".pdf")); 

     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return "SUCCESS"; 

} 

struts.xml的

<result name="SUCCESS" type="stream"> 
      <param name="contentType">application/octet-stream</param> 
      <param name="inputName">fileInputStream</param> 
      <param name="contentDisposition">attachment;filename="${pdfName}.pdf"</param> 
      <param name="bufferSize">1024</param> 
     </result> 

例外:

java.lang.reflect.InvocationTargetException

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
java.lang.reflect.Method.invoke(Unknown Source) 

java.lang.NoClassDefFoundError:org/a帕什/公/日誌/的LogFactory

net.sf.jasperreports.engine.util.JRLoader.(JRLoader.java:67) 
net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99) 
net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:94) 

拋出java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory

org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1313) 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1164) 
net.sf.jasperreports.engine.util.JRLoader.(JRLoader.java:67) 
+0

可能重複[獲取java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory異常](http://stackoverflow.com/questions/1551697/getting-java-lang-classnotfoundexception-org-apache- commons-logging-logfactory) –

回答

-1

你有公地日誌庫?

+1

這應該是一條評論。沒有答案。 –

0

試着下載這個jar文件。

commons-logging library

然後將其粘貼在WEB-INF/lib目錄在您的Web內容。

它說你的公用日誌記錄庫沒有找到。

希望它會有所幫助。