當我告訴這個片段中一個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版本。我應該遵循他們的建議,還是有什麼我可以做錯的?
不管你的問題: 當「showSaveDialog」返回的內容不是JFileChooser.APPROVE_OPTION時,爲什麼要返回「新的File(」。「)」? (例如CANCEL_OPTION或ERROR_OPTION) – Tedil 2010-06-15 17:07:32
,因爲我保存在應用程序的工作目錄中。 – Geo 2010-06-15 17:10:25
注意6u19和6u20是安全版本,所以要非常小心地降級。 – 2010-06-15 17:22:52