Spec-Zone.ru › OpenJDK 27

Класс URLClassLoader

java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
Все реализованные интерфейсы:
Closeable, AutoCloseable
public class URLClassLoader extends SecureClassLoader implements Closeable
Этот загрузчик классов используется для загрузки классов и ресурсов из путей поиска URL, указывающих как на JAR-файлы, так и на каталоги. Считается, что любой URL со схемой jar: (см. JarURLConnection) указывает на JAR-файл. Считается, что любой URL со схемой file:, заканчивающийся символом '/', указывает на каталог. В противном случае предполагается, что URL указывает на JAR-файл, который будет открыт по мере необходимости.

Этот загрузчик классов поддерживает загрузку классов и ресурсов из содержимого многоверсионного JAR-файла, на который указывает заданный URL.

С версии:
1.2

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

Конструктор Описание
URLClassLoader(String name, URL[] urls, ClassLoader parent)
Создает новый именованный загрузчик классов URLClassLoader для указанных URL.
URLClassLoader(String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
Создает новый именованный загрузчик классов URLClassLoader для указанных URL, родительского загрузчика классов и URLStreamHandlerFactory.
URLClassLoader(URL[] urls)
Создает новый URLClassLoader для указанных URL, используя системный загрузчик классов в качестве родительского.
URLClassLoader(URL[] urls, ClassLoader parent)
Создает новый URLClassLoader для заданных URL.
URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
Создает новый URLClassLoader для указанных URL, родительского загрузчика классов и URLStreamHandlerFactory.

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

Модификатор и тип Метод Описание
protected void addURL(URL url)
Добавляет указанный URL в список URL для поиска классов и ресурсов.
void close()
Закрывает этот URLClassLoader, чтобы его больше нельзя было использовать для загрузки новых классов или ресурсов, определенных этим загрузчиком.
protected Package definePackage(String name, Manifest man, URL url)
Определяет пакет с указанным именем в этом URLClassLoader.
protected Class<?> findClass(String name)
Находит и загружает класс с указанным именем из пути поиска URL.
URL findResource(String name)
Находит ресурс с указанным именем в пути поиска URL.
Enumeration<URL> findResources(String name)
Возвращает перечисление URL, представляющих все ресурсы с указанным именем в пути поиска URL.
protected PermissionCollection getPermissions(CodeSource codesource)
Возвращает пустую коллекцию разрешений.
InputStream getResourceAsStream(String name)
Возвращает входной поток для чтения указанного ресурса.
URL[] getURLs()
Возвращает путь поиска URL для загрузки классов и ресурсов.
static URLClassLoader newInstance(URL[] urls)
Создает новый экземпляр URLClassLoader для указанных URL и загрузчика классов по умолчанию в качестве родительского.
static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
Создает новый экземпляр URLClassLoader для указанных URL и родительского загрузчика классов.

Методы, объявленные в классе SecureClassLoader

defineClass, defineClass
Модификатор и тип Метод Описание
protected final Class<?> defineClass(String name, byte[] b, int off, int len, CodeSource cs)
Преобразует массив байтов в экземпляр класса Class с необязательным CodeSource.
protected final Class<?> defineClass(String name, ByteBuffer b, CodeSource cs)
Преобразует ByteBuffer в экземпляр класса Class с необязательным CodeSource.

Методы, объявленные в классе ClassLoader

clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
Модификатор и тип Метод Описание
void clearAssertionStatus()
Устанавливает для этого загрузчика классов состояние утверждений по умолчанию в значение false и отбрасывает все настройки утверждений для пакетов и классов, связанные с загрузчиком классов.
protected final Class<?> defineClass(byte[] b, int off, int len)
Устарел.
Заменен на defineClass(String, byte[], int, int)
protected final Class<?> defineClass(String name, byte[] b, int off, int len)
Преобразует массив байтов в экземпляр класса Class.
protected final Class<?> defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain)
Преобразует массив байтов в экземпляр класса Class с указанным ProtectionDomain.
protected final Class<?> defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain)
Преобразует ByteBuffer в экземпляр класса Class с указанным ProtectionDomain.
protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
Определяет пакет с указанным именем в этом ClassLoader.
protected Class<?> findClass(String moduleName, String name)
Находит класс с указанным двоичным именем в модуле, определенном для этого загрузчика классов.
protected String findLibrary(String libname)
Возвращает абсолютное имя пути к нативной библиотеке.
protected final Class<?> findLoadedClass(String name)
Возвращает класс с указанным двоичным именем, если виртуальная машина Java зарегистрировала этот загрузчик как инициирующий загрузчик класса с таким двоичным именем.
protected URL findResource(String moduleName, String name)
Возвращает URL ресурса в модуле, определенном для этого загрузчика классов.
protected final Class<?> findSystemClass(String name)
Находит класс с указанным двоичным именем, загружая его при необходимости.
protected Object getClassLoadingLock(String className)
Возвращает объект блокировки для операций загрузки классов.
final Package getDefinedPackage(String name)
Возвращает Package с указанным именем, определенный этим загрузчиком классов.
final Package[] getDefinedPackages()
Возвращает все Packageы, определенные этим загрузчиком классов.
String getName()
Возвращает имя этого загрузчика классов или null, если загрузчику классов не присвоено имя.
protected Package getPackage(String name)
Устарел.
Если несколько загрузчиков классов делегируют друг другу загрузку и определяют классы с одинаковым именем пакета, а один из таких загрузчиков полагается на поведение поиска getPackage, чтобы получить Package из родительского загрузчика, свойства, предоставляемые Package, могут не соответствовать ожидаемым в остальной части программы.
protected Package[] getPackages()
Возвращает все Packageы, определенные этим загрузчиком классов и его предками.
final ClassLoader getParent()
Возвращает родительский загрузчик классов, используемый для делегирования.
static ClassLoader getPlatformClassLoader()
Возвращает загрузчик классов платформы.
URL getResource(String name)
Находит ресурс с указанным именем.
Enumeration<URL> getResources(String name)
Находит все ресурсы с указанным именем.
static ClassLoader getSystemClassLoader()
Возвращает системный загрузчик классов.
static URL getSystemResource(String name)
Находит ресурс с указанным именем в пути поиска, используемом для загрузки классов.
static InputStream getSystemResourceAsStream(String name)
Открывает для чтения ресурс с указанным именем в пути поиска, используемом для загрузки классов.
static Enumeration<URL> getSystemResources(String name)
Находит все ресурсы с указанным именем в пути поиска, используемом для загрузки классов.
final Module getUnnamedModule()
Возвращает безымянный Module для этого загрузчика классов.
final boolean isRegisteredAsParallelCapable()
Возвращает true, если этот загрузчик классов зарегистрирован как способный к параллельной загрузке, в противном случае возвращает false.
Class<?> loadClass(String name)
Загружает класс с указанным двоичным именем.
protected Class<?> loadClass(String name, boolean resolve)
Загружает класс с указанным двоичным именем.
protected static boolean registerAsParallelCapable()
Регистрирует вызывающий класс как способный к параллельной загрузке.
protected final void resolveClass(Class<?> c)
Связывает указанный класс.
Stream<URL> resources(String name)
Возвращает поток, элементы которого — URL всех ресурсов с указанным именем.
void setClassAssertionStatus(String className, boolean enabled)
Устанавливает требуемое состояние утверждений для именованного класса верхнего уровня в этом загрузчике классов и всех содержащихся в нем вложенных классов.
void setDefaultAssertionStatus(boolean enabled)
Устанавливает состояние утверждений по умолчанию для этого загрузчика классов.
void setPackageAssertionStatus(String packageName, boolean enabled)
Устанавливает состояние утверждений по умолчанию для указанного пакета.
protected final void setSigners(Class<?> c, Object[] signers)
Устанавливает цифровые подписи класса.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарел, подлежит удалению: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания, либо до истечения определенного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания, либо до истечения определенного промежутка реального времени.

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

URLClassLoader

public URLClassLoader(URL[] urls, ClassLoader parent)
Создает новый URLClassLoader для указанных URL-адресов. Поиск классов и ресурсов будет выполняться по URL-адресам в указанном порядке после первоначального поиска в указанном родительском загрузчике классов. Предполагается, что URL-адрес со схемой jar: указывает на файл JAR. Предполагается, что URL-адрес со схемой file:, заканчивающийся символом '/', указывает на каталог. В противном случае предполагается, что URL-адрес указывает на файл JAR, который будет загружен и открыт по мере необходимости.
Примечание к API:
Если parent указан как null (для загрузчика классов начальной загрузки), нет гарантии, что все классы платформы будут видны. Сведения о загрузчике классов начальной загрузки и других встроенных загрузчиках классов см. в разделе Встроенные загрузчики классов среды выполнения.
Параметры:
urls — URL-адреса, из которых загружаются классы и ресурсы
parent — родительский загрузчик классов для делегирования; может быть null для загрузчика классов начальной загрузки
Исключения:
NullPointerException — если urls или любой из его элементов равен null.

URLClassLoader

public URLClassLoader(URL[] urls)
Создает новый URLClassLoader для указанных URL-адресов, используя системный загрузчик классов в качестве родительского. Поиск классов и ресурсов будет выполняться по URL-адресам в указанном порядке после первоначального поиска в родительском загрузчике классов. Предполагается, что URL-адрес, заканчивающийся символом '/', указывает на каталог. В противном случае предполагается, что URL-адрес указывает на файл JAR, который будет загружен и открыт по мере необходимости.
Параметры:
urls — URL-адреса, из которых загружаются классы и ресурсы
Исключения:
NullPointerException — если urls или любой из его элементов равен null.

URLClassLoader

public URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
Создает новый URLClassLoader для указанных URL-адресов, родительского загрузчика классов и URLStreamHandlerFactory. Аргумент parent будет использоваться как родительский загрузчик классов для делегирования. Аргумент factory будет использоваться как фабрика обработчиков потоков для получения обработчиков протоколов при создании новых URL-адресов JAR.
Примечание к API:
Если parent указан как null (для загрузчика классов начальной загрузки), нет гарантии, что все классы платформы будут видны. Сведения о загрузчике классов начальной загрузки и других встроенных загрузчиках классов см. в разделе Встроенные загрузчики классов среды выполнения.
Параметры:
urls — URL-адреса, из которых загружаются классы и ресурсы
parent — родительский загрузчик классов для делегирования; может быть null для загрузчика классов начальной загрузки
factory — URLStreamHandlerFactory, используемая при создании URL-адресов
Исключения:
NullPointerException — если urls или любой из его элементов равен null.

URLClassLoader

public URLClassLoader(String name, URL[] urls, ClassLoader parent)
Создает новый именованный URLClassLoader для указанных URL-адресов. Поиск классов и ресурсов будет выполняться по URL-адресам в указанном порядке после первоначального поиска в указанном родительском загрузчике классов. Предполагается, что URL-адрес, заканчивающийся символом '/', указывает на каталог. В противном случае предполагается, что URL-адрес указывает на файл JAR, который будет загружен и открыт по мере необходимости.
Примечание к API:
Если parent указан как null (для загрузчика классов начальной загрузки), нет гарантии, что все классы платформы будут видны. Сведения о загрузчике классов начальной загрузки и других встроенных загрузчиках классов см. в разделе Встроенные загрузчики классов среды выполнения.
Параметры:
name — имя загрузчика классов или null, если имя не задано
urls — URL-адреса, из которых загружаются классы и ресурсы
parent — родительский загрузчик классов для делегирования; может быть null для загрузчика классов начальной загрузки
Исключения:
IllegalArgumentException — если заданное имя пусто.
NullPointerException — если urls или любой из его элементов равен null.
Начиная с версии:
9

URLClassLoader

public URLClassLoader(String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
Создает новый именованный URLClassLoader для указанных URL-адресов, родительского загрузчика классов и URLStreamHandlerFactory. Аргумент parent будет использоваться как родительский загрузчик классов для делегирования. Аргумент factory будет использоваться как фабрика обработчиков потоков для получения обработчиков протоколов при создании новых URL-адресов JAR.
Примечание к API:
Если parent указан как null (для загрузчика классов начальной загрузки), нет гарантии, что все классы платформы будут видны. Сведения о загрузчике классов начальной загрузки и других встроенных загрузчиках классов см. в разделе Встроенные загрузчики классов среды выполнения.
Параметры:
name — имя загрузчика классов или null, если имя не задано
urls — URL-адреса, из которых загружаются классы и ресурсы
parent — родительский загрузчик классов для делегирования; может быть null для загрузчика классов начальной загрузки
factory — URLStreamHandlerFactory, используемая при создании URL-адресов
Исключения:
IllegalArgumentException — если заданное имя пусто.
NullPointerException — если urls или любой из его элементов равен null.
Начиная с версии:
9

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

getResourceAsStream

public InputStream getResourceAsStream(String name)
Возвращает входной поток для чтения указанного ресурса. Если этот загрузчик закрыт, все ресурсы, открытые этим методом, будут закрыты.

Порядок поиска описан в документации к методу ClassLoader.getResource(String).

Переопределяет:
getResourceAsStream в классе ClassLoader
Параметры:
name — имя ресурса
Возвращает:
Входной поток для чтения ресурса или null, если ресурс не найден
Исключения:
NullPointerException — если name равен null
Начиная с версии:
1.7

close

public void close() throws IOException
Закрывает этот URLClassLoader, после чего его нельзя будет использовать для загрузки новых классов или ресурсов, определенных этим загрузчиком. Классы и ресурсы, определенные любыми родительскими загрузчиками в иерархии делегирования, по-прежнему доступны. Уже загруженные классы и ресурсы также остаются доступными.

В случае URL-адресов jar: и file: метод также закрывает все открытые им файлы. Если другой поток загружает класс в момент вызова метода close, результат этой загрузки не определен.

Метод предпринимает все возможные меры для закрытия открытых файлов, перехватывая внутренним образом исключения IOException. Непроверяемые исключения и ошибки не перехватываются. Вызов close для уже закрытого загрузчика ничего не делает.

Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Исключения:
IOException — если при закрытии какого-либо файла, открытого этим загрузчиком классов, возникло исключение IOException. Все такие исключения перехватываются внутри метода. Если перехвачено только одно исключение, оно повторно выбрасывается. Если перехвачено несколько исключений, второе и последующие добавляются как подавленные исключения к первому перехваченному исключению, которое затем повторно выбрасывается.
Начиная с версии:
1.7

addURL

protected void addURL(URL url)
Добавляет указанный URL-адрес в конец списка URL-адресов для поиска классов и ресурсов.

Если указанный URL-адрес равен null, уже присутствует в списке URL-адресов или этот загрузчик закрыт, вызов этого метода не дает эффекта.

Параметры:
url — URL-адрес, добавляемый в путь поиска URL-адресов

getURLs

public URL[] getURLs()
Возвращает путь поиска URL-адресов для загрузки классов и ресурсов. Он включает исходный список URL-адресов, указанных в конструкторе, а также URL-адреса, впоследствии добавленные методом addURL().
Возвращает:
путь поиска URL-адресов для загрузки классов и ресурсов.

findClass

protected Class<?> findClass(String name) throws ClassNotFoundException
Находит и загружает класс с указанным именем из пути поиска URL-адресов. URL-адреса, указывающие на файлы JAR, загружаются и открываются по мере необходимости, пока класс не будет найден.
Переопределяет:
findClass в классе ClassLoader
Параметры:
name — имя класса
Возвращает:
полученный класс
Исключения:
ClassNotFoundException — если класс не найден или загрузчик закрыт.
NullPointerException — если name равен null.

definePackage

protected Package definePackage(String name, Manifest man, URL url)
Определяет новый пакет по имени в этом URLClassLoader. Атрибуты, содержащиеся в указанном Manifest, будут использоваться для получения сведений о версии пакета и его запечатывании. Для запечатанных пакетов дополнительный URL-адрес указывает URL-адрес источника кода, из которого был загружен пакет.
Параметры:
name — имя пакета
man — Manifest, содержащий сведения о версии пакета и его запечатывании
url — URL-адрес источника кода для пакета или null, если его нет
Возвращает:
вновь определенный объект Package
Исключения:
IllegalArgumentException — если этот загрузчик классов уже определил пакет с таким именем

findResource

public URL findResource(String name)
Находит ресурс с указанным именем в пути поиска URL-адресов.
Переопределяет:
findResource в классе ClassLoader
Параметры:
name — имя ресурса
Возвращает:
URL для ресурса или null, если ресурс не найден либо загрузчик закрыт.

findResources

public Enumeration<URL> findResources(String name) throws IOException
Возвращает Enumeration URL-адресов, представляющих все ресурсы с указанным именем в пути поиска URL-адресов.
Переопределяет:
findResources в классе ClassLoader
Параметры:
name — имя ресурса
Возвращает:
Enumeration URL. Если загрузчик закрыт, Enumeration не содержит элементов.
Исключения:
IOException — если возникает исключение ввода-вывода

getPermissions

protected PermissionCollection getPermissions(CodeSource codesource)
Возвращает пустую коллекцию разрешений.
Переопределяет:
getPermissions в классе SecureClassLoader
Параметры:
codesource — CodeSource
Возвращает:
пустую коллекцию разрешений
Исключения:
NullPointerException — если codesource равен null.

newInstance

public static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
Создает новый экземпляр URLClassLoader для указанных URL-адресов и родительского загрузчика классов.
Параметры:
urls — URL-адреса для поиска классов и ресурсов
parent — родительский загрузчик классов для делегирования
Возвращает:
полученный загрузчик классов
Исключения:
NullPointerException — если urls или любой из его элементов равен null.

newInstance

public static URLClassLoader newInstance(URL[] urls)
Создает новый экземпляр URLClassLoader для указанных URL-адресов и родительского загрузчика классов по умолчанию.
Параметры:
urls — URL-адреса для поиска классов и ресурсов
Возвращает:
полученный загрузчик классов
Исключения:
NullPointerException — если urls или любой из его элементов равен null.

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

© 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.

Spec-Zone.ru

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