@ Дэн Дайер не прав, Class.forName может throw NoClassDefFoundError
, если класс, который он пытается, получает ошибку ClassNotFoundException в своем статическом инициализаторе. Ниже приведено
class Outer {
public static final void main(final String[] args) throws Exception{
Class.forName("Inner");
}
}
Если вы скомпилируете и запустите это в каталоге без другого файла, вы получите ClassNotFoundException: Inner
Теперь добавьте следующее в тот же каталог, скомпилируйте все и java Outer
один раз, чтобы увидеть, что все работает нормально.
class Inner {
static Inner2 _i2 = new Inner2();
}
class Inner2 {}
Наконец, удалите Inner2.class и перезапустите Outer, вы получите get NoClassDefFoundError: Inner2
, caused by ClassNotFoundException: Inner2