Джейв, отчет не показывает отчет Джаспера

#java #jasper-reports

Вопрос:

У меня проблема в моей программе, я хочу сгенерировать этот отчет при нажатии кнопки «Загрузка накладной». Я создал отчет с помощью отчета jasper, и он отлично работает в режиме предварительного просмотра, но когда я пытаюсь подключиться к своему java-приложению, при нажатии кнопки ничего не отображается.

это мой код:

 btnNewButton_1 = new JButton("Delivery Note Upload");
    btnNewButton_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/storge?autoReconnect=trueamp;useSSL=true","root","");
                JasperDesign jdesign = JRXmlLoader.load(null, "C:\Users\MAlasmari\eclipse-workspace\Test\src\MA\Blank_A41.jrxml");
                
                String sqlC= "select *,max(location),max(Date) from itemdelivery";
                JRDesignQuery upquery = new JRDesignQuery();
                upquery.setText(sqlC);
                
                jdesign.setQuery(upquery);
            
                JasperReport jreport = JasperCompileManager.compileReport(jdesign);
                JasperPrint jprint = JasperFillManager.fillReport(jreport, null, conn);

                JasperViewer.viewReport(jprint, true);
                
            } catch (JRException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });
 
 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "net.sf.jasperreports.engine.JasperReportsContext.getProperty(String)" because "this.jasperReportsContext" is null
    at net.sf.jasperreports.engine.JRPropertiesUtil.getProperty(JRPropertiesUtil.java:150)
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createParser(JRXmlDigesterFactory.java:1571)
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(JRXmlDigesterFactory.java:1549)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:263)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:219)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:194)
    at MA.UserM$3.actionPerformed(UserM.java:131)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
 

Ответ №1:

Вы передали a null в качестве контекста при загрузке файла «.jrxml». Это привело к NPE в реализации load метода.

Вам необходимо создать экземпляр контекста отчетов или позвонить DefaultJasperReportsContext.getInstance() , чтобы создать контекст по умолчанию. Затем передайте это, а не a null в load вызове.

Ответ №2:

Я решаю проблему, это было из-за подключения к базе данных в:

 JasperPrint jprint = JasperFillManager.fillReport(jreport, null, conn);
 

в приведенном выше коде соединение неверно
Итак, я создал файл для подключения к Sql и вызвал файл здесь
Вот так.

 JasperPrint jprint = JasperFillManager.fillReport(jreport, null, connection);