У меня есть следующие классы.
Я вручную скомпилировал классы, используя javac и запустил класс Driver
.
Позже удалено entity.class
и MyCustomException.class
и запустили приложение, как показано ниже.
java test test
Приведенная ниже ошибка жалуется на то, что MyCustomException
отсутствует, но нео классе Entity
.Итак, не ясно, почему JRE жалуется на класс MyCustomException
, а не на класс Entity
.
Действительно, я удалил код throw new MyCustomException();
, но я не обнаружил ошибку о Entity
классе.
Caused by: java.lang.NoClassDefFoundError: com/techdisqus/exception/MyCustomException
Обратите внимание, что условие IF будет НЕ be выполнено , поскольку я передаю аргумент команды как test
Почему выдается исключение, вызывающее загрузку MyCustomException
, которое будетникогда не выполняется, но JVM не загружает никакой другой обычный класс, если не выполняется условие, как здесь Entity
класс здесь.Пожалуйста, отметьте Driver.java
ниже.
MyCustomException.java
public class MyCustomException extends RuntimeException {
}
Entity.java
public class Entity {
}
Driver.java
public class Driver {
public static void main(String[] args) {
String s = args[0];
if("true".equals(s)){
Entity entity = new Entity(); // This is not loaded, unless s is true
throw new MyCustomException(); // this is loaded even s is NOT true.
}else{
System.out.println("success");
}
}
}
Спасибо за помощь