-
NoClassDefFoundError
: Dies ist eine dieser Ausnahmen, dieException in thread “main“ NoClassDefFoundError
häufig neue Entwickler in die Welt der Java-Programmierung einlädt. Sie schreiben ein Helloworld-Programm, gehen zur Befehlszeile und schreiben „ java “ – den auszuführenden Befehl und „BAM“ :-) Nach einer Weile werden Anfänger verstehen, wie sie diese Ausnahme beheben können, und sehen, wie ihre Hello World gedruckt wird.NoClassDefFoundError
passiert, wenn die Java Virtual Machine (JVM) versucht, zur Laufzeit auf eine Klasse zuzugreifen und die Klasse nicht gefunden wird, obwohl dieselbe Klasse zur Kompilierungszeit vorhanden war. Am häufigsten tritt diese Ausnahme auf, wenn ein Java-Programm über den Befehl „java“ mit einem ungültigen Parameterwert ausgeführt wirdclasspath
. [Classpath
ist ein Parameter, der über die Befehlszeile oder über eine Umgebungsvariable festgelegt wird und der Java Virtual Machine oder dem Java-Compiler angibt, wo nach vom Benutzer deklarierten Klassen oder Paketen gesucht werden soll – ca. Übersetzer] Mögliche Ausschlussgründe:- Kurs nicht verfügbar in
Classpath
. - Oft ändert das Skript, das beim Start des Betriebssystems ausgeführt wird, den Wert der Umgebungsvariablen
classpath
. Sie können dies überprüfen, indem Sie denset
Befehl „“ in der Windows-Befehlszeile ausführen und prüfen, ob die Klassendefinition im Wert enthalten istclasspath
. Wenn Sie möchten, können Sie diese Ausnahme im Javarevisited- Blog weiter untersuchen .
- Kurs nicht verfügbar in
-
ClassNotFoundException
: ИсключениеClassNotFoundException
это еще одно исключение, из-за которого новичкам, только начинающим программировать на Java, снятся кошмары. Интересно что для среднего разработчика нужно некоторое время чтобы перестать путатьClassNotFoundException
иNoClassDefFoundError
между собой. И поэтому вопрос о разнице этих двух исключений остается одним из часто задаваемых на собеседовании на позицию junior Java разработчика.ClassNotFoundException
случается когда JVM пытается загрузить определенный класс и не обнаруживает такого же вclasspath
. Обычно новички сталкиваются с этим в Codeе, который подключается к базе данных используя JDBC библиотеку. Пытаясь загрузить драйвер с помощью следующего CodeаClass.forName( “JDBCdriver”)
. Хороший материал поClassNotFoundException
можно найти здесь. Так же рекомендуется ознакомиться и понять концепцию загрузчиков классов в Java чтобы эффективно справляться с этим исключением. Вы возможно захотите посмотреть следующую Buchseite о том Wie настроить classpath в окружениях Win/Unix. А так, Wie следует из dokumentierenации Java, это исключение случается в следующих случаях:- Когда пытаются загрузить класс используя метод
Class.forName
и файл.class
не существует вclasspath
. Это самый частый случай из всех трех. - Когда загрузчик класса пытается загрузить класс используя метод
loadClass
. - Когда загрузчик класса пытается загрузить класс используя
findSystemClass
.
- Когда пытаются загрузить класс используя метод
-
NullPointerException
: исключениеNullPointerException
понять легче и новички с ним справляются быстрее нежели с двумя предыдущими. В тоже время причину исключения очень легко найти так Wie приводится номер строки где оно случилось. В первую очередь исключение случается когда JVM пытается обратиться к null в том месте где должен был быть ein Objekt. Чаще всего это случается когда JVM пытается вызвать метод используя ein Objekt и оказывается что ein Objekt gleichtnull
. Другие случаи, Wie упоминается в dokumentierenации Java, могут быть следующими:- Получая доступ к oder изменяя метод ein Objektа, который gleicht
null
. - Получая длину массива когда он gleicht
null
. - Получая доступ к oder меняя ein Objektы, которые являются заключенными в массив, который gleicht
null
.
null
(далее – проверка на null – прим. переводчика). Поэтому рано oder поздно разработчик начинает это использовать и тогда проверки на null появляются везде. Интересно что использовать везде проверку наnull
не считается примером хорошего программирования. Основная причина почему проверка наnull
используется разработчиками это передавать ein Objektnull
в случаи ошибки. В место этого пример хорошего программирования, который должен пропагандироваться программистами, это передавать пустой ein Objekt когда Zustand для главной/рабочей ветви программы не удовлетворяется. Это в свою очередь уменьшило бы количество проверок наnull
. Все-таки легче говорить нежели применять это на практике.:) - Получая доступ к oder изменяя метод ein Objektа, который gleicht
ClassCastException
: это еще одно из исключений, с которым знакомятся новички когда пытаются привести ein Objekt к классу, экземпляром которого он не является. Опять же его довольно легко понять, найти причину и исправить. Один из способов избежать этого исключения, когда во время исполнения тип ein Objektа не известен, это использовать проверку является ли ein Objekt экземпляром определенного класса: “instanceof
”.ArrayIndexOutOfBoundsException
: название этого исключения говорит само за себя. Оно случается когда JVM пытается получить доступ к элементу массива используя неверный индекс, на пример, отрицательный (-1) oder больший oder равный размеру массива. Его легко понять, найти причину и исправить. Следующий пример Codeа поможет избежать этого исключения:for( index = 0; index < array.length; index++ )
Обратите внимание что индекс начинается с 0 и возрастает до величины на 1 меньше размера массива.-
IllegalArgumentException
: Это исключение самое простое, его легко понять, найти его причину и исправить. Оно случается когда JVM пытается передать методу неподходящий аргумент oder аргумент неправильного типа.
gram2005
Level 30
6 Java-Ausnahmen, die Neulinge plagen
Von Zeit zu Zeit stoße ich auf neue Entwickler, die die folgenden einfachen Ausnahmen nicht verstehen können und denen ich alles noch einmal erklären muss. Höchstwahrscheinlich befinden sich viele erfahrene Java-Entwickler in einer ähnlichen Situation und helfen Neulingen, mit den folgenden Ausnahmen umzugehen. Deshalb habe ich beschlossen, diesen Artikel zu schreiben und in Zukunft darauf zu verweisen. Kommentare und Ergänzungen zur Ausschlussliste sind willkommen.
GO TO FULL VERSION