2010-06-15 4 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? (например, CANCEL_OPTION или ERROR_OPTION) – Tedil

+0

, потому что я сохраняю в рабочем каталоге приложения. – Geo

+0

Примечание 6u19 и 6u20 - это выпуски безопасности, поэтому будьте осторожны с понижением. –

ответ

1

Это действительно похоже на проблему с версией/регрессию. Таким образом, ответ будет, следовательно, будет: следовать их советам, вы не сделали ничего плохого;)

Смежные вопросы