getAbsolutePath()NullPointerException

时间:2012-09-16 21:14:49

标签: java

我正在使用Java中的Halo:CE自定义游戏启动器,我正在使用Java中的Properties类设置首选项系统,因此用户可以设置自定义游戏路径。我使用JFileChooser选择文件,然后将该路径写入配置文件。

但是,程序在这一行给出了一个空指针异常:(这是在事件监听器函数中)

if(source == fovChooseButton)
    {
        int returnVal = chooseFile.showOpenDialog(settingsWindow);
        if(returnVal == JFileChooser.APPROVE_OPTION)
        {
            File selected = chooseFOV.getSelectedFile();

            try
            {
                config.setProperty("STLPath", selected.getAbsolutePath()); //This line gives the exception
                config.store(new FileOutputStream(CONFIG_FILE), null);


            }

            catch(Exception e)
            {
                handleException(e);
            }
        }
    }

我确实有另一个JFileChooser,它不会抛出任何异常。这是另一个的代码:

    if(source == fileChooseButton)
    {
        int returnVal = chooseFile.showOpenDialog(settingsWindow);
        if(returnVal == JFileChooser.APPROVE_OPTION)
        {
            File selected = chooseFile.getSelectedFile();

            try
            {
                config.setProperty("GamePath", selected.getAbsolutePath());

                config.store(new FileOutputStream(CONFIG_FILE), null);

            }

            catch(Exception e)
            {
                handleException(e);
            }
        } // end if

    }

所有handleException()都会显示一个带有堆栈跟踪的对话框窗口。

帮助?

3 个答案:

答案 0 :(得分:3)

您提示用户输入带有 chooseFile 的文件后,您正尝试从其他文件选择器读取文件chooseFOV

int returnVal = chooseFile.showOpenDialog(settingsWindow);
    if(returnVal == JFileChooser.APPROVE_OPTION)
    {
        File selected = chooseFOV.getSelectedFile();

答案 1 :(得分:0)

  

int returnVal = chooseFile.showOpenDialog(settingsWindow);      选择文件= chooseFOV.getSelectedFile();

你有两个变量,可能也希望在第二行使用chooseFile

答案 2 :(得分:0)

什么是chooseFOV?你似乎正在使用chooseFile作为对话框,所以它是一个有选择的那个。