【问题标题】:Report will not load from netbeans JasperReports报告不会从 netbeans JasperReports 加载
【发布时间】:2012-01-28 07:25:48
【问题描述】:

所有阅读本文的人您好......

我已经把头撞在墙上和桌子上几天了......我正在一个 netbeans 项目中使用 JasperReports 创建一个报告。我不知道发生了什么,但前一刻它正在工作,下一刻我弹出了 2 个警告,现在报告窗口(屏幕打印输出)和 PDF 打印输出将不会加载,除非代码是从开发环境中运行的。

以下是警告: log4j:WARN 找不到记录器 (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory) 的附加程序。 log4j:WARN 请正确初始化log4j系统。

警告是由我用来编译报告的这行代码引发的:

JasperReport jasperReport = JasperCompileManager.compileReport("C:/Report/report1.jrxml");

用于编译和生成报告的整个代码块如下:

public void Print_File() {
    try {
        String parameter = LoadNum_Text.getText();
        String RecordPath = "C:/Report/Created/LoadSheet/";

        String name = RecordPath + parameter;
        String destinationFile = name + ".pdf";

        Map param = new HashMap();

        param.put("Load_Number", parameter);

        con = DriverManager.getConnection(host, uName, uPass);

        String sql = "SELECT * FROM Load_Sheet";

        JasperReport jasperReport = JasperCompileManager.compileReport("C:/Report/report1.jrxml");
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, con);
        JasperExportManager.exportReportToPdfFile(jasperPrint, destinationFile);//export dynamic file name
        //con.close();
        try {
            JasperViewer visor = new JasperViewer(jasperPrint, false);
            visor.setVisible(true);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

我以前版本的代码现在也有同样的问题,因为我尝试回滚到它们,并且我还尝试了旧版本的(曾经是)工作 report1.jrxml 文件。

我还尝试了一个我在 else 中运行的不同的 MYSQL 服务器,只是想看看这是否是一个潜在的问题,但最终结果仍然相同。

我尝试只从 IReport 本身(我用来生成报告的程序)导入库,但也无济于事。

我还下载并尝试了 JasperReport4.5.0 和 3.0.1 的源代码,但效果更差......

如果您能提供任何帮助,我将不胜感激......

【问题讨论】:

    标签: java netbeans jasper-reports ireport


    【解决方案1】:

    在您的类路径中添加以下 log4j.xml 文件:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
        <appender name="CA" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
            </layout>
        </appender>
        <appender name="FA" class="org.apache.log4j.FileAppender">
            <param name="File" value="myReport.log"/>
            <param name="Threshold" value="ALL"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
            </layout>
        </appender>
        <root>
            <level value="ALL" />
            <appender-ref ref="CA" />
            <appender-ref ref="FA" />
        </root>
    </log4j:configuration>
    

    这应该解决 log4j.xml WARN 并为您提供有关发生情况的更多信息(查看 myReport.log 并最终在此处发布,如果您仍有问题)。


    您好 Erik,我查看了 myReport.log,发现了以下(所有类似的)错误:

    5072 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'titleBaseFontSize': Invocation of init method failed; nested exception is 
    java.lang.NoSuchFieldException: TITLE_BASEFONT_SIZE
    5315 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'subtitleBaseFontSize': Invocation of init method failed; nested exception is 
    java.lang.NoSuchFieldException: SUBTITLE_BASEFONT_SIZE
    5610 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'legendBaseFontSize': Invocation of init method failed; nested exception is java.lang.NoSuchFieldException: LEGEND_BASEFONT_SIZE
    5991 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'axisLabelFontSize': Invocation of init method failed; nested exception is java.lang.NoSuchFieldException: AXIS_LABEL_FONT_SIZE
    6041 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'axisTickLabelFontSize': Invocation of init method failed; nested exception is java.lang.NoSuchFieldException: AXIS_TICK_LABEL_FONT_SIZE
    .....
    .....
    .....
    

    这么多java.lang.NoSuchFieldException(这意味着类的Java运行时调用找不到方法,如果jasper报告设计器版本与运行时不同,这是很常见的)。 我怀疑 dev env 与您的运行时环境不同,所以请仔细检查两个环境中的 jasper 报告版本是否相同。

    您可以做的另一个测试是将开发环境的 myReport.log 与另一个环境的 myReport.log 对比,看看您是否在两者中都有 java.lang.NoSuchFieldException 异常. (一般有什么区别)。 如果您发现它们不同(例如您没有捕获 java.lang.NoSuchFieldException),那么嫌疑人几乎就是事实。

    问候

    【讨论】:

    • 感谢您的及时回复,代码帮助清除了警告,它还创建了一个非常大的报告日志....因此我决定上传它而不是将其嵌入论坛...
    • 这里是日志的网络链接:fileswap.com/dl/mY22eOyui3/myReport.log.html 感谢所有的帮助!!!谢谢,埃里克
    • 亲爱的 Tony-Rad,如何添加这个 xml 文件
    【解决方案2】:

    添加

    spring.jar file
    spring-core-3.2.4.RELEASE
    swingx-2007_10_07
    

    发出警告后会正常工作---

    log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
    log4j:WARN Please initialize the log4j system properly.
    

    【讨论】:

      【解决方案3】:

      我们在通过 Jasper 导出报告时遇到了类似的问题,在我们的应用程序中,我们有 spring-4.3.2.jar 版本和 jasperreports-5.6.1.jar。

      解决办法就是把这些常量从chartConstantsBean.xml中删除,反正也用不上。

      chartConstantsBean.xml 位于 jasperreports-chart-themes-5.0.0.jar 中。

      我们已将其删除,它正在运行,没有任何错误或警告。

      【讨论】:

        猜你喜欢
        • 2013-12-13
        • 1970-01-01
        • 2013-09-10
        • 1970-01-01
        • 2018-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多