0

我很难找到导致此 AWT-EventQueue-0 NullPointerException 错误的原因。我已将其缩小到这两种方法中的某个地方。我认为从我的阅读中 AWT 与动作事件有关,所以我的猜测是在 actionPerformed 方法中,但你的猜测和我的一样好。这个问题绝对不是重复的,因为它完全是这段代码独有的。

  public void actionPerformed(ActionEvent e) {
    int saveType = 0;
    String buttonString = e.getActionCommand();

    if (buttonString.equals("Shutdown >>")) {

        shutdownServer();
    }

    else if (buttonString.equals("Save >>")) {

        JFileChooser fc = new JFileChooser();
        fc.setCurrentDirectory(new java.io.File("."));
        fc.setDialogTitle("Save file");
        FileNameExtensionFilter filter = new FileNameExtensionFilter(".txt", "txt", "text");
        fc.setFileFilter(filter);

        int select = fc.showSaveDialog(null);
        if (select == JFileChooser.APPROVE_OPTION)
        {
            File fi = fc.getSelectedFile();
            fileName = fi.getPath();

            if (fileRB.isSelected()) {
                dbDisplaytx.setText("REPORT SAVED TO FILE");
                saveType = 1;
            }
            else if (databaseRB.isSelected()) {
                dbDisplaytx.setText("REPORT SAVED TO DATABASE");
                saveType = 2;
            }
             else if (bothRB.isSelected()) {
                dbDisplaytx.setText("REPORT SAVED TO BOTH FILE & DATABASE");
                saveType = 3;
            }
             else {
                // stub to test radio button
                dbDisplaytx.setText("WRONG SELECTION");
             }
        }
        produceProfileReport(saveType);
    }

}

这是第二种方法

    private void produceProfileReport(int saveType) {
       OperationalProfileReportGeneratorFactory reportGeneratorFactory = SimpleOperationalProfileReportGeneratorFactory
            .getInstance();
    OperationalProfileReportGenerator reportGenerator = reportGeneratorFactory
            .newReportGenerator();

    //Saves to file
    if(saveType == 1 || saveType == 3){
        try {
            FileWriter writer = new FileWriter(fileName);
            writer.write(reportGenerator.generateReport(database));
            writer.flush();
            writer.close();
        } catch (IOException ioe) {
            display.displayMessage(UNABLE_TO_WRITE_PROFILE_REPORT_ERROR_MESSAGE
                    + fileName);
        } // try...catch (IOException)
    }
    //Saves to database
    else if(saveType == 2 || saveType == 3) {
        try {
            FileWriter writer = new FileWriter(fileName);
            //reportGenerator.generateReport(database)
            writer.write("WRITE TO DATABASE");
            writer.flush();
            writer.close();
        } catch (IOException ioe) {
            display.displayMessage(UNABLE_TO_WRITE_PROFILE_REPORT_ERROR_MESSAGE
                    + fileName);
        }
    }
}

生成报告()

 public String generateReport(OperationalProfileDatabase database) {

    synchronized (database) {
        if (database.getNumberOfOperationalProfiles() == 0) {
            return NO_PROFILES_RECEIVED_REPORT; 
        } else {
                    database.toSQL();
            return database.toString();
        } // if (database.getNumberOfOperationalProfiles() == 0)
    } // synchronized (database)

}

堆栈跟踪

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at oplogger.server.reportgen.SimpleOperationalProfileReportGenerator.generateReport(SimpleOperationalProfileReportGenerator.java:49)
at oplogger.server.ui.AdministrationTerminal_GUI.produceProfileReport(AdministrationTerminal_GUI.java:130)
at oplogger.server.ui.AdministrationTerminal_GUI.actionPerformed(AdministrationTerminal_GUI.java:279)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
4

0 回答 0