【问题标题】:java program crashes when It doesn't find right matchjava程序在找不到正确匹配时崩溃
【发布时间】:2015-01-17 01:15:55
【问题描述】:

其实我从来没有遇到过这样的问题,但这一次让我很不舒服。

程序从用户那里获取一个文本字段,并从 SQL 中搜索正确的匹配项,即 PostgreSQL。它工作正常,但是当我输入不在数据库中的内容时,程序崩溃或发生某些事情,我的意思是它没有响应任何内容。如果它可能有帮助这里是代码的相关部分:

public void actionPerformed(ActionEvent e)
{
    String path = null;
    JButton clicked = (JButton) e.getSource();
    if (clicked == loadButton) {
        try {
            PreparedStatement st = connect.prepareStatement("select * from databank where code=?");
            st.setString(1, field.get(0).getText());
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                for (int i = 0; i < field.size(); i++) {
                    if (i < 7)
                        field.get(i).setText(rs.getString(i + 1));
                    else if (i > 6 && i < 10)
                        field.get(i).setText(Double.toString(rs.getDouble(i + 1)));
                    else if (i > 9 && i < 14)
                        field.get(i).setText(Integer.toString(rs.getInt(i + 1)));
                    else if (i > 13)
                        field.get(i).setText(rs.getString(i + 1));
                    path = rs.getString(15);
                }
            }
            rs.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "Error Code = 0020");
        } finally {
            imageHold.setIcon(new ImageIcon(path));
            SwingUtilities.updateComponentTreeUI(frame);
            SwingUtilities.updateComponentTreeUI(imageHold);
        }
    }
}

我错过了什么?我该如何解决这个问题?

编辑:

这是堆栈跟踪。

Uncaught error fetching image:
java.lang.NullPointerException
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:101)
    at sun.awt.image.FileImageSource.getDecoder(FileImageSource.java:53)
    at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
    at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
    at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)

【问题讨论】:

  • updateComponentTreeUI 并没有按照你的想法做,它不应该被用来对 UI 状态进行基本更新,而且效率很低
  • 您还没有打印完整的堆栈跟踪,特别是涉及您的代码的部分,也没有指出哪一行导致了异常。再次,请帮助我们。
  • @RoeyGolzarpoor:那行没有用,因为那是 Java 核心类 FileInputStream.java 的第 138 行。
  • imageHold.setIcon( new ImageIcon( path ) ); 调用时,path 的值似乎是 null(猜测)
  • “如果你告诉我为什么我会记住我做错了什么,它会避免下一个错误”如果你将鼠标箭头悬停在向下投票按钮上,你会看到什么时候应该使用它,并且其中之一情况是问题“不清楚”。如果您发布的这个问题stacktrace不完整,它缺少最重要的信息:您的代码中的哪一行抛出异常以及该行包含什么代码,所以我们只能在guess-where-my中玩-error-是没有多少人喜欢的游戏。

标签: java swing postgresql crash


【解决方案1】:

我已经解决了这个问题,当我的图像列在我的数据库中为空时,

imageHold.setIcon(new ImageIcon(path));

这会导致空指针异常。

我做到了:

if( path != null )
    imageHold.setIcon( new ImageIcon( path ) );

问题解决了。

【讨论】:

  • 实际上,您的代码可能会导致资源处于开放状态并降低程序的效率,请查看at this post 以了解有关更好的资源管理的更多信息...
猜你喜欢
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多