РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
718 of 1163 menu

Класс ClassNotFoundException

Класс ClassNotFoundException - это проверяемое исключение (checked exception), которое наследуется от класса Exception. Оно выбрасывается, когда приложение пытается загрузить класс по его строковому имени с помощью методов Class.forName, ClassLoader.loadClass или ClassLoader.findSystemClass, но класс с указанным именем не найден в classpath. Данное исключение сигнализирует о том, что либо имя класса указано неверно, либо соответствующий jar-файл или директория с классом отсутствует в classpath приложения.

Поскольку ClassNotFoundException является проверяемым исключением, его необходимо либо обработать с помощью блоков try и catch, либо объявить в сигнатуре метода с помощью ключевого слова throws.

Синтаксис

Class.forName("com.example.MyClass")

Метод Class.forName принимает в качестве параметра полное имя класса (с указанием пакета) и возвращает объект типа Class. Если класс не найден, выбрасывается исключение ClassNotFoundException.

Пример

Давайте попробуем загрузить несуществующий класс и обработаем возникшее исключение:

public class Main { public static void main(String[] args) { try { Class<?> clazz = Class.forName("com.example.NonExistent"); System.out.println("Class loaded: " + clazz.getName()); } catch (ClassNotFoundException e) { System.out.println("Class not found: " + e.getMessage()); } } }

Результат выполнения кода:

"Class not found: com.example.NonExistent"

Пример

Давайте загрузим существующий класс из стандартной библиотеки Java и выведем его полное имя:

public class Main { public static void main(String[] args) { try { Class<?> clazz = Class.forName("java.lang.String"); System.out.println("Class loaded: " + clazz.getName()); } catch (ClassNotFoundException e) { System.out.println("Class not found: " + e.getMessage()); } } }

Результат выполнения кода:

"Class loaded: java.lang.String"

Пример

Давайте воспользуемся загрузчиком классов ClassLoader для загрузки класса по имени и обработаем исключение:

public class Main { public static void main(String[] args) { ClassLoader loader = Main.class.getClassLoader(); try { Class<?> clazz = loader.loadClass("java.util.ArrayList"); System.out.println("Class loaded: " + clazz.getName()); } catch (ClassNotFoundException e) { System.out.println("Class not found: " + e.getMessage()); } } }

Результат выполнения кода:

"Class loaded: java.util.ArrayList"

Пример

Давайте объявим исключение ClassNotFoundException в сигнатуре метода с помощью ключевого слова throws и обработаем его в вызывающем коде:

public class Main { public static Class<?> loadClass(String name) throws ClassNotFoundException { return Class.forName(name); } public static void main(String[] args) { try { Class<?> clazz = loadClass("com.example.Missing"); System.out.println("Class loaded: " + clazz.getName()); } catch (ClassNotFoundException e) { System.out.println("Class not found: " + e.getMessage()); } } }

Результат выполнения кода:

"Class not found: com.example.Missing"

Смотрите также

  • ключевое слово throws,
    которое объявляет исключения в сигнатуре метода
  • конструкция try,
    которая начинает блок обработки исключений
  • конструкция catch,
    которая перехватывает и обрабатывает исключения
  • класс Exception,
    который является родителем проверяемых исключений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить