Java - JFileChooserクラスのバグ回避

Java6プラットフォームで開発をしているときに気がついたバグについて。

ファイルの選択・保存などにJFileChooserクラスを使う際、実行環境がWindows XPだと極端に動作が遅くなる。ひとつのファイルを開くのに何分もかかってしまう。完全なバグである。Sunもいろいろとアップデートはしているようだがなかなかどうして改善されない。

どうやら対象ディレクトリに圧縮ファイルが存在していると動作が遅くなってしまうらしい。Windows XPは圧縮フォルダというzipアーカイバを標準で備えているのだが、どうやらJFileChooserクラスはこいつと仲が悪いらしい。私は圧縮フォルダ機能を使わないのでこの機能を無効にした。「スタート」から「ファイル名を指定して実行」として以下のコマンドを入力すれば圧縮フォルダは無効となる。
  • regsvr32 /u %windir%\system32\zipfldr.dll
無効にした後、再度JFileChooserクラスを用いてファイルを開いてみたらあっさりと動いてくれた。本質的な解決にはなっていないが、しばらくはこれで開発を進めようと思います♪

なお、再び圧縮フォルダを有効にしたい場合は
  • regsvr32 %windir%\system32\zipfldr.dll
とすればOK。

コメント