コンテキスト: java.io.File クラスには、次のような static 内部クラス メソッドがあります。
LazyInitialization.temporaryDirectory();
[いくつかのコードを追加するために編集] 以下の私のコードは、最終的に上記のコード行を呼び出します。temporaryDirectory() メソッド内から例外がスローされますが、これは私のコンテキストでは問題ありません/予想されます。
try {
File tempFile = File.createTempFile("aaa", "aaa");
} catch (Exception e) {
// handle exception
}
次に、同じメソッド (createTempFile) を再度呼び出すと、「java.lang.NoClassDefFound エラー - クラス java.io.File$LazyInitialization を初期化できませんでした」というメッセージが表示されます。
質問: 内部メソッドが例外をスローしたとしても、内部クラス LazyInitialization は、その静的メソッドが呼び出されたときにクラス ローダーによってロードされているはずだと思いました。しかし、2 回目の呼び出し時に NoClassDefFound エラーが表示されるのはなぜですか? 元の仮定は間違っていますか?