SWTでdll指定が不要になった?

昔はSWTのDLLにネイティブのライブラリーパス(java.library.pathとか)を指定しないといけなかったはずだが
http://d.hatena.ne.jp/muimy/20050902/p3


最近SWTをためしたら、そんな設定いらんことになってる。
なんで???
JARのルートに配置したDLLって勝手に読まれるんだったっけ???
SWTのソースを見てみたら、どうやら中でそのような処理を行っているようだ。


org.eclipse.swt.internal.Libraryクラスの
loadLibrary (String, boolean)メソッドで
DLLが見つからなかったらJARの中からDLLをひろって、
java.io.tmpdir(C:\Documents and Settings\誰それ\Local Settings\Temp)
にコピーしてそこから読むとかしてる。


該当コード

/* Try loading library from the tmp directory if swt library path is not specified */
if (path == null) {
    path = System.getProperty ("java.io.tmpdir"); //$NON-NLS-1$
    path = new File (path).getAbsolutePath ();
    if (load (path + SEPARATOR + mappedName1)) return;
    if (mapName && load (path + SEPARATOR + mappedName2)) return;
}
    
/* Try extracting and loading library from jar */
if (path != null) {
    if (extract (path + SEPARATOR + mappedName1, mappedName1)) return;
    if (mapName && extract (path + SEPARATOR + mappedName2, mappedName2)) return;
}

で、一度、そこにコピーした後消さないから、
その後、DLL抜きで(swt.jarを展開してDLLをとって)試してみても、動く(上のjava.io.tmpdirから拾ってくる)


一方、自分で
System.loadLibrary("swt-win32-3346")
とかしても、ひろってこない。あくまでSWTの中のクラスでやってる処理。


うーん、便利といえば便利なんだけど、前と違うおかしいな、
と思ってちょっとはまった。
きっとドキュメントよめばちゃんと書いてるんだろうな。