【问题标题】:why Struts has detected an unhandled exception?为什么 Struts 检测到一个未处理的异常?
【发布时间】:2016-11-09 15:33:42
【问题描述】:

我已经创建了一个代码来使用 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)

【问题讨论】:

标签: java jasper-reports


【解决方案1】:

尝试下载这个jar文件。

commons-logging library

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

它说找不到您的公共日志库。

希望它会有所帮助。

【讨论】:

    【解决方案2】:

    你有公共日志库吗?

    【讨论】:

    • 这应该是一条评论。没有答案。
    猜你喜欢
    • 2014-06-04
    • 2017-02-23
    • 2015-12-20
    • 2013-02-10
    • 1970-01-01
    • 2016-07-04
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多