与任务调度程序一起使用时,jFileChooser无法正常工作

时间:2012-10-22 06:51:00

标签: java nullpointerexception scheduled-tasks jfilechooser event-dispatch-thread

我有一个程序可以向用户发送带附件的电子邮件。该程序应该按照预定的时间运行,因此我使用任务调度程序为我做。我做了所有必要的步骤来实现这一目标。 (创建.bat文件以激活/运行jar文件,然后任务调度程序将触发.bat文件,如果它达到规定的时间表。)现在的问题是,当程序运行或由任务调度程序触发时,它会发出这个错误:

java.lang.NullPointerException
at sun.awt.shell.Win32ShellFolder2$1.call(Unknown Source)
at sun.awt.shell.Win32ShellFolder2$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

我尝试使用.bat文件手动运行它,它可以正常工作,没有任何错误或任何错误。我怀疑它与jFileChooser()有关,因为它不会检索默认目录中的附件,但我不确定,可能还有其他原因。 这是检索默认目录中附件的函数:

 public String getMyDocument(String filename)
 {
     JFileChooser fr = new JFileChooser();
     FileSystemView fw = fr.getFileSystemView();
     return fw.getDefaultDirectory().toString()+"\\"+filename+".xls";
 }

PS。

所有必需的附件都出现在默认目录中,没有拼写错误的单词或错位的字符。我也做了一些研究,但到目前为止我还没有找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

终于找到了问题。我删除了jfileChooser(),而是使用了getAbsolutePath()。

public String getMyDocument(String filename)
 {
 String fileName = filename+'.xls';
 File attachmentFile = new File(fileName);
 String filePath = attachmentFile.getAbsolutePath().toString();
 return filePath();
 }