代码之家  ›  专栏  ›  技术社区  ›  Geo

显示jFileChooser时出现NullPointerException

  •  0
  • Geo  · 技术社区  · 15 年前

    我用以下代码段显示了一个jFileChooser:

    public File getDestination() {
        JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int option = chooser.showSaveDialog(null);
        if(option == JFileChooser.APPROVE_OPTION) {
            return chooser.getSelectedFile().getAbsolutePath();
        }
        return new File(".");
    }
    

    通常,第一次显示时,它会正确显示和工作。第二次,它总是抛出这个异常:

    Exception in thread "Basic L&F File Loading Thread" java.lang.NullPointerException
        at sun.awt.shell.Win32ShellFolder2.pidlsEqual(Unknown Source)
        at sun.awt.shell.Win32ShellFolder2.equals(Unknown Source)
        at sun.awt.shell.Win32ShellFolderManager2.isFileSystemRoot(Unknown Source)
        at sun.awt.shell.ShellFolder.isFileSystemRoot(Unknown Source)
        at javax.swing.filechooser.FileSystemView.isFileSystemRoot(Unknown Source)
        at javax.swing.filechooser.WindowsFileSystemView.isTraversable(Unknown Source)
        at javax.swing.JFileChooser.isTraversable(Unknown Source)
        at javax.swing.plaf.basic.BasicDirectoryModel$LoadFilesThread.run0(Unknown Source)
        at javax.swing.plaf.basic.BasicDirectoryModel$LoadFilesThread.run(Unknown Source)
    

    Java版本说明:

    java version "1.6.0_20"
    Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
    Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
    

    我找到的线头 here 说我应该降级Java版本。我应该听从他们的建议,还是我有什么错的地方?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Tedil    15 年前

    这看起来像是版本问题/回归。 因此,答案是:听从他们的建议,你没有做错任何事;)

        2
  •  2
  •   Noel Grandin    13 年前

    这是在1.6u21版本中修复的

    请参见这里: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6940843