在Java中填充不带参数的JasperReports报表

在Java中填充不带参数的JasperReports报表,java,jasper-reports,Java,Jasper Reports,我只想在按下按钮时,根据给定的数据源显示我的JasperReports报告。我可以去iReport查看报告,因为它现在应该是这样的,没有需要传递的参数。但我需要在按下jFrame上的特定按钮时发生这种情况。HashMap应该用来传递参数,我一直得到一个NullPointerException,而我使用的是null或者只是一个空的HashMap。但是HashMap中没有任何内容 我也不断地遇到这个错误: log4j:WARN找不到记录器的附加程序(net.sf.jasperreports.exte

我只想在按下按钮时,根据给定的数据源显示我的JasperReports报告。我可以去iReport查看报告,因为它现在应该是这样的,没有需要传递的参数。但我需要在按下jFrame上的特定按钮时发生这种情况。HashMap应该用来传递参数,我一直得到一个NullPointerException,而我使用的是null或者只是一个空的HashMap。但是HashMap中没有任何内容

我也不断地遇到这个错误:
log4j:WARN找不到记录器的附加程序
(net.sf.jasperreports.extensions.extensions.extensions环境)。
log4j:警告请正确初始化log4j系统

代码:

顺便说一下,文件名不是空指针
这个代码永远不会通过JasperPrint

编辑,整个例外:

log4j:警告:找不到记录器的附加器 (net.sf.jasperreports.extensions.extensions环境)。log4j:警告 请正确初始化log4j系统。线程“AWT-EventQueue-0”中出现异常 java.lang.Class.isAssignableFrom处的java.lang.NullPointerException(本机方法)
位于net.sf.jasperreports.engine.fill.JRFillTextField.getFormat JRFillTextField.java:706)
位于net.sf.jasperreports.engine.fill.JRFillTextField.getFormat(JRFillTextField.java:706) 在 net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:394) 在 net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368) 在 net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258) 在 net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBandNoOverflow(JRVerticalFiller.java:439) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVerticalFiller.java:403) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:264) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) 在 net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58) 在 net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417) 在 net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247) 在 执行的操作(PINdiodeDialog.java:268) 在 fireActionPerformed(AbstractButton.java:2022)


你能发布异常吗?听起来你的字段正试图从HashMap中读取数据,但因为其中没有任何内容,它遇到了一个NPEYes,但我没有要传递的参数。我甚至举了一个例子,他们在hashmap中什么都不放。但我不明白为什么我的错了。看起来您的一个或多个字段正试图根据映射中的值类型决定字段的格式。如果没有基本报告的示例,将很难解决建议问题。我更新了我的库,它成功了。
        String fileName = "./ArchiveSummary.jasper";
        HashMap hm = new HashMap();
        try{
            Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/full", "root", "");
            if (connection == null) {
                JOptionPane.showMessageDialog (null, "Problems accessing the Database. Program will close.", "Database Error", JOptionPane.ERROR_MESSAGE);
                System.exit(1);
            }
        JasperPrint jprint = JasperFillManager.fillReport(fileName, hm,connection);
        JasperExportManager.exportReportToHtmlFile(jprint, "./");
        JasperViewer.viewReport(jprint);
        } catch (SQLException sqlE) {
            System.out.println("SQL Error "+sqlE.toString());
        }catch (ClassNotFoundException classNotFound) {
            System.out.println("Class not found");
        }catch (HeadlessException exp) {
            System.out.println("ERROR "+ exp.toString());
        } catch (JRException ex) {
            System.out.println(ex.toString());
        }