Рубрики
Без рубрики

Исключение Java ClassNotFoundException – java.lang.Исключение ClassNotFoundException

Исключение Java ClassNotFoundException, исключение ClassNotFoundException в Java, пример исключения Java ClassNotFoundException, Исключение ClassNotFoundException против NoClassDefFoundError, Как разрешить java.lang.Исключение исключения ClassNotFoundException.

Автор оригинала: Pankaj Kumar.

Исключение Java ClassNotFoundException

  • Исключение Java ClassNotFoundException возникает, когда приложение пытается загрузить класс, но Загрузчик классов не может найти его в пути к классу.
  • Общие причины java.lang.ClassNotFoundException используют Class.forName или ClassLoader.loadClass для загрузки класса, передавая строковое имя класса, и оно не найдено в пути к классу.
  • Исключение ClassNotFoundException является проверенным исключением , поэтому его необходимо перехватить или передать вызывающему.
  • Исключение ClassNotFoundException всегда возникает во время выполнения, потому что мы косвенно загружаем класс с помощью загрузчика классов. Компилятор Java не имеет возможности узнать, будет ли класс присутствовать в пути к классам во время выполнения или нет.
  • Один из наиболее распространенных примеров исключения ClassNotFoundException-это когда мы пытаемся загрузить драйверы JDBC с помощью Class.forName , но забываем добавить файл jar в путь к классу.

Пример исключения Java ClassNotFoundException

Давайте рассмотрим простой пример, где мы получим ClassNotFoundException .

package com.journaldev.exceptions;

public class DataTest {

  public static void main(String[] args) {
    try {
      Class.forName("com.journaldev.MyInvisibleClass");

      ClassLoader.getSystemClassLoader().loadClass("com.journaldev.MyInvisibleClass");

      ClassLoader.getPlatformClassLoader().loadClass("com.journaldev.MyInvisibleClass");
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }

}

Обратите внимание, что com.journaldev.Мой невидимый класс не существует, поэтому, когда мы выполняем вышеуказанную программу, мы получаем следующую трассировку стека исключений.

java.lang.ClassNotFoundException: com.journaldev.MyInvisibleClass
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:292)
	at com.journaldev.exceptions.DataTest.main(DataTest.java:7)

В приведенном выше примере все три оператора будут выдавать java.lang.Исключение ClassNotFoundException .

Как разрешить исключение ClassNotFoundException

Очень легко исправить исключение ClassNotFoundException, потому что трассировка стека исключений четко указывает класс, который не найден. Просто проверьте параметры пути к классу и убедитесь, что он присутствует во время выполнения.

Исключение ClassNotFoundException против NoClassDefFoundError

NoClassDefFoundError – это ошибка во время выполнения, возникающая, когда класс не найден во время выполнения. Это очень похоже на ClassNotFoundException . Подробнее читайте на Java NoClassDefFoundError .

Ссылка: API Doc