Spec-Zone.ru › OpenJDK 24

Интерфейс ClassLoaderRepository

public interface ClassLoaderRepository

Экземпляры этого интерфейса используются для хранения списка зарегистрированных ClassLoader в MBean Server. Они предоставляют необходимые методы для загрузки классов с помощью зарегистрированных ClassLoader.

Первый ClassLoader в ClassLoaderRepository всегда является собственным ClassLoader MBean Server.

Когда MBean регистрируется в MBean Server, если он является подклассом ClassLoader и если он не реализует интерфейс PrivateClassLoader, он добавляется в конец ClassLoaderRepository MBean Server. Если он затем дерегистрируется из MBean Server, он удаляется из ClassLoaderRepository.

Порядок MBean в ClassLoaderRepository имеет значение. Для любых двух MBean X и Y в ClassLoaderRepository, X должен появиться до Y, если регистрация X была завершена до начала регистрации Y. Если X и Y были зарегистрированы одновременно, их порядок неопределен. Регистрация MBean соответствует вызову MBeanServer.registerMBean(java.lang.Object, javax.management.ObjectName) или одному из методов MBeanServer.createMBean.

Since:
1.5
See Also:
  • MBeanServerFactory

Краткое описание методов

Модификатор и тип Метод Описание
Class<?> loadClass(String className)
Загрузить заданное имя класса через список загрузчиков классов.
Class<?> loadClassBefore(ClassLoader stop, String className)
Загрузить заданное имя класса через список загрузчиков классов, остановившись на заданном.
Class<?> loadClassWithout(ClassLoader exclude, String className)
Загрузить заданное имя класса через список загрузчиков классов, исключая заданный.

Подробное описание методов

loadClass

Class<?> loadClass(String className) throws ClassNotFoundException

Загрузить заданное имя класса через список загрузчиков классов. Каждый ClassLoader по очереди из ClassLoaderRepository вызывается для загрузки класса через его метод ClassLoader.loadClass(String). Если он успешно возвращает объект Class, это результат этого метода. Если он бросает ClassNotFoundException, поиск продолжается со следующим ClassLoader. Если он бросает другую ошибку, ошибка передается от этого метода. Если конец списка достигнут, бросается ClassNotFoundException.

Parameters:
className - Имя класса, который должен быть загружен.
Returns:
загруженный класс.
Throws:
ClassNotFoundException - Указанный класс не найден.

loadClassWithout

Class<?> loadClassWithout(ClassLoader exclude, String className) throws ClassNotFoundException

Загрузить заданное имя класса через список загрузчиков классов, исключая заданный. Каждый ClassLoader по очереди из ClassLoaderRepository, кроме exclude, вызывается для загрузки класса через его метод ClassLoader.loadClass(String). Если он успешно возвращает объект Class, это результат этого метода. Если он бросает ClassNotFoundException, поиск продолжается со следующим ClassLoader. Если он бросает другую ошибку, ошибка передается от этого метода. Если конец списка достигнут, бросается ClassNotFoundException.

Обратите внимание, что если ClassLoader в ClassLoaderRepository вызывает этот метод из своего метода loadClass, он подвергает себя тупику, если другой ClassLoader в ClassLoaderRepository делает то же самое одновременно. Рекомендуется использовать метод loadClassBefore(java.lang.ClassLoader, java.lang.String) для избежания риска тупика.

Parameters:
exclude - Загрузчик классов, который нужно исключить. Может быть null, в этом случае этот метод эквивалентен loadClass(className).
className - Имя класса, который нужно загрузить.
Returns:
загруженный класс.
Throws:
ClassNotFoundException - Указанный класс не найден.

loadClassBefore

Class<?> loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException

Загрузить заданное имя класса через список загрузчиков классов, остановившись на заданном. Каждый ClassLoader по очереди из ClassLoaderRepository вызывается для загрузки класса через его метод ClassLoader.loadClass(String). Если он успешно возвращает объект Class, это результат этого метода. Если он бросает ClassNotFoundException, поиск продолжается со следующим ClassLoader. Если поиск достигает stop или конца списка, бросается ClassNotFoundException.

Обычно этот метод вызывается из метода loadClass stop, чтобы проконсультироваться с загрузчиками, которые появляются перед ним в ClassLoaderRepository. Останавливая поиск как только stop достигается, избегается потенциальный тупик с одновременной загрузкой классов.

Parameters:
stop - Загрузчик классов, на котором нужно остановиться. Может быть null, в этом случае этот метод эквивалентен loadClass(className).
className - Имя класса, который нужно загрузить.
Returns:
загруженный класс.
Throws:
ClassNotFoundException - Указанный класс не найден.

Отправить отчет об ошибке или предложить улучшение
Для получения дополнительной информации по API и документации разработчика, см. Документацию Java SE, которая содержит более подробные описания для разработчиков с концептуальными обзорами, определениями терминов, обходами и рабочими примерами кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или его аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или его аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 США.
Все права защищены. Использование подчиняется лицензионным условиям и политике перераспределения документации.
DRAFT 24-ea+36-Debian-1

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.management/javax/management/loading/ClassLoaderRepository.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API