ClassNotFoundException
с большей вероятностью будет выброшен ( ваш код) в ситуациях, когда вы вручную загружаете классы - именно для таких вещей, как Class.forName()
. Эти имена могут быть получены из пользовательского ввода, например.
NoClassDefFoundError
произойдет, когда сам файл класса ссылается на класс, который затем не может быть найден. Класс был когда-то , но сейчас его нет - это не просто ошибка в коде, который пытается отразить отражение, это ошибка развертывания, заключающаяся в том, что не все доступные классы доступны. Насколько я могу сказать, NoClassDefFoundError
обычно или, возможно, всегда wrap a ClassNotFoundException
- но дело в том, что это не то, что ваш код предназначен для защиты от , поскольку это указывает на среду, которая, вероятно, слишком повреждена для восстановления.
По крайней мере, это мое понимание :)