1

添付ファイル付きの電子メールをユーザーに送信するプログラムがあります。プログラムはスケジュールされた時間に従って実行される必要があるため、タスクスケジューラを使用して実行します。これを実現するために必要なすべての手順を実行しました。(.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。

必要な添付ファイルはすべてデフォルトのディレクトリにあり、単語のスペルミスや文字の配置ミスはありません。私もいくつかの調査を行いましたが、これまでのところ解決策はまだ見つかりません。

4

1 に答える 1

0

最後に問題が見つかりました。jfileChooser() を削除し、代わりに getAbsolutePath() を使用しました。

public String getMyDocument(String filename)
 {
 String fileName = filename+'.xls';
 File attachmentFile = new File(fileName);
 String filePath = attachmentFile.getAbsolutePath().toString();
 return filePath();
 }
于 2012-10-24T06:39:51.123 に答える