Интерфейс 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:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Class |
loadClass |
Загрузить заданное имя класса через список загрузчиков классов.
|
Class |
loadClassBefore |
Загрузить заданное имя класса через список загрузчиков классов, остановившись на заданном.
|
Class |
loadClassWithout |
Загрузить заданное имя класса через список загрузчиков классов, исключая заданный.
|
Подробное описание методов
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- Указанный класс не найден.
© 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