注:質問として投稿するつもりでしたが、SSCCE で問題を再現しようとした結果、以下に投稿された解決策にたどり着きました。
コードにクラスがあり、フィールドの前private
に非static
フィールドが初期化されています。次の SSCCE では問題を再現できませんでした。static
final
public class MyClass {
private static final File myDefaultPath =
new File(System.getProperty("user.home"), "DefaultPath");
private JFileChooser myFileChooser = new JFileChooser() {
// File chooser initialization block:
{
myDefaultPath.mkdirs();
// In my code, the above line throws:
// java.lang.ExceptionInInitializerError
// Caused by: java.lang.NullPointerException
// at init.order.MyClass$1.<init>(MyClass.java:18)
// at init.order.MyClass.<init>(MyClass.java:14)
// at init.order.MyClass.<clinit>(MyClass.java:9)
setCurrentDirectory(myDefaultPath);
}
};
public static void main (String[] args) {
new MyClass().myFileChooser.showDialog(null, "Choose");
}
}
何らかの理由で、File myDefaultPath
が の前に初期化されていませんJFileChooser myFileChooser
。
static
(特にstatic final
) フィールドを最初に初期化すべきではありませんか?