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

时间:2016-11-09 02:09:13

标签: java jasper-reports

我已经创建了一个使用struts 2下载pdf的代码。但是当我运行它时会抛出异常......

Struts检测到未处理的异常:

消息:

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

文件:org / apache / catalina / loader / 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 / apache / commons / logging / 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)

2 个答案:

答案 0 :(得分:0)

尝试下载此jar文件。

commons-logging library

然后将其粘贴到Web内容的 WEB-INF / lib 中。

它表示找不到你的公共日志库。

希望它会有所帮助。

答案 1 :(得分:-1)

你有公共记录库吗?