Javaでなくて悪いが、C#には using という構文があって
BufferedWriter out = new BufferedWriter(new FileWriter("hoge.txt"));
try {
 out.write("hoge");
} finally {
 out.close();
}
を
using (BufferedWriter out = new BufferedWriter(new FileWriter("hoge.txt"))) {
 out.write("hoge");
}
のように書ける。
これから見て取れるのは、途中で例外を投げる場合は、「closeでは失敗しない」か
「closeで発生させる例外でも同じ情報を提供すべき」という思想だと思ってるが、
ドライバによってはそういう考えが欠けているということなんだろう。
※C#は触ったことないから少し違うかも。

>>846
autoexec.batに
set CLASSPATH=%CLASSPATH%;.
で、再起動、でもいけると思うよ。738でも書いたけど