为什么Struts检测到未处理的异常?

问题描述:

我创建代码用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

这应该是一条评论。没有答案。 –

试着下载这个jar文件。

commons-logging library

然后将其粘贴在WEB-INF/lib目录在您的Web内容。

它说你的公用日志记录库没有找到。

希望它会有所帮助。