2010-06-15 93 views
0

當我告訴這個片段中一個JFileChooser:NullPointerException異常顯示的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版本。我應該遵循他們的建議,還是有什麼我可以做錯的?

+0

不管你的問題: 當「showSaveDialog」返回的內容不是JFileChooser.APPROVE_OPTION時,爲什麼要返回「新的File(」。「)」? (例如CANCEL_OPTION或ERROR_OPTION) – Tedil 2010-06-15 17:07:32

+0

,因爲我保存在應用程序的工作目錄中。 – Geo 2010-06-15 17:10:25

+0

注意6u19和6u20是安全版本,所以要非常小心地降級。 – 2010-06-15 17:22:52

回答

1

這真的看起來像是一個版本問題/迴歸。 所以答案會因此是:聽從他們的建議,你沒有做錯任何事;)