JFileChooserの初期起動が遅い件について、JNI経由で呼び出しをしようとしてみた。

JFileChooserの初期起動が遅いのでJNI経由で呼び出しを行うと意外と早いんじゃないかと思って実験してみた。


まずは、よさそうなJNIブリッジのライブラリがあったのでこれを使用することにした。(※JNI詳しくないし、めんどくさいから、Cから作るくらいなら遅いのガマンする程度の気合)


使ったのはJNAというライブラリでこれを使用しWindowsAPIのSHBrowseForFolderと
FindWindowとSHGetPathFromIDListを利用し、フォルダ選択ダイアログを出力させるというもの。


結果的には起動遅延も少なくて、ちゃんと値も取得できた。
これで万事OKかと思ってたら、20回くらい開いて選択を繰り返すとJVMがクラッシュすることが判明、ログ見たらntdll.dllがなんかバッファーオーバーフローっぽい内容でした。で、ここで俺の情熱は尽きた。



○JFileChooserの起動遅延バグ
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6372808


○JNIブリッジライブラリ
https://jna.dev.java.net/