Класс URLClassLoader
- Все реализуемые интерфейсы:
-
Closeable,AutoCloseable
- Непосредственные подклассы:
MLet
public class URLClassLoader extends SecureClassLoader implements Closeable
jar: (см. JarURLConnection) предполагается, что ссылается на JAR-файл. Любой URL со схемой file:, заканчивающийся на '/', предполагается, что ссылается на каталог. В противном случае URL предполагается, что ссылается на JAR-файл, который будет открыт по мере необходимости. Этот класс загрузчик поддерживает загрузку классов и ресурсов из содержимого JAR-файла с несколькими версиями, на который ссылается данный URL.
Контекст доступа AccessControlContext потока, который создал экземпляр URLClassLoader, будет использоваться при последующей загрузке классов и ресурсов.
Классы, которые загружаются, по умолчанию имеют разрешение только на доступ к URL, указанным при создании URLClassLoader.
- С тех пор:
- 1.2
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
URLClassLoader |
Создает новый именованный URLClassLoader для указанных URL. |
URLClassLoader |
Создает новый именованный URLClassLoader для указанных URL, родительского загрузчика классов и URLStreamHandlerFactory. |
URLClassLoader |
Создает новый URLClassLoader для указанных URL с использованием родительского загрузчика делегирования по умолчанию ClassLoader. |
URLClassLoader |
Создает новый URLClassLoader для заданных URL. |
URLClassLoader |
Создает новый URLClassLoader для указанных URL, родительского загрузчика классов и URLStreamHandlerFactory. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
addURL |
Добавляет указанный URL в список URL для поиска классов и ресурсов. |
void |
close() |
Закрывает этот URLClassLoader, чтобы он больше не мог использоваться для загрузки новых классов или ресурсов, определенных этим загрузчиком. |
protected Package |
definePackage |
Определяет новый пакет по имени в этом URLClassLoader. |
protected Class |
findClass |
Находит и загружает класс с указанным именем из пути поиска URL. |
URL |
findResource |
Находит ресурс с указанным именем в пути поиска URL. |
Enumeration |
findResources |
Возвращает перечисление URL, представляющих все ресурсы в пути поиска URL с заданным именем. |
protected PermissionCollection |
getPermissions |
Возвращает разрешения для данного объекта codesource. |
InputStream |
getResourceAsStream |
Возвращает поток ввода для чтения указанного ресурса. |
URL[] |
getURLs() |
Возвращает путь поиска URL для загрузки классов и ресурсов. |
static URLClassLoader |
newInstance |
Создает новый экземпляр URLClassLoader для указанных URL и родительского загрузчика классов по умолчанию. |
static URLClassLoader |
newInstance |
Создает новый экземпляр URLClassLoader для указанных URL и родительского загрузчика классов. |
Методы, объявленные в классе java.security.SecureClassLoader
defineClass, defineClass
Методы, объявленные в классе java.lang.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
Подробное описание конструкторов
URLClassLoader
public URLClassLoader(URL[] urls, ClassLoader parent)
jar: предполагается, что он ссылается на файл JAR. Любой URL-адрес со схемой file:, заканчивающийся '/', предполагается, что он ссылается на каталог. В противном случае URL-адрес предполагается, что он ссылается на файл JAR, который будет загружен и открыт по мере необходимости. Если установлено управление безопасностью, этот метод сначала вызывает метод управления безопасностью checkCreateClassLoader, чтобы убедиться, что создание загрузчика классов разрешено.
- Параметры:
-
urls- URL-адреса, с которых следует загружать классы и ресурсы -
parent- родительский загрузчик классов для делегирования - Исключения:
-
SecurityException- если существует менеджер безопасности, и его методcheckCreateClassLoaderне разрешает создание загрузчика классов. -
NullPointerException- еслиurlsили любой из его элементов являетсяnull. - См. также:
URLClassLoader
public URLClassLoader(URL[] urls)
ClassLoader. URL-адреса будут проверяться в указанном порядке для классов и ресурсов после первой проверки в родительском загрузчике классов. Любой URL-адрес, заканчивающийся '/', предполагается, что он ссылается на каталог. В противном случае URL-адрес предполагается, что он ссылается на файл JAR, который будет загружен и открыт по мере необходимости. Если установлено управление безопасностью, этот метод сначала вызывает метод управления безопасностью checkCreateClassLoader для разрешения создания загрузчика классов.
- Параметры:
-
urls- URL-адреса, с которых следует загружать классы и ресурсы - Исключения:
-
SecurityException- если существует менеджер безопасности, и его методcheckCreateClassLoaderне разрешает создание загрузчика классов. -
NullPointerException- еслиurlsили любой из его элементов являетсяnull. - См. также:
URLClassLoader
public URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
Если установлено управление безопасностью, этот метод сначала вызывает метод управления безопасностью checkCreateClassLoader для разрешения создания загрузчика классов.
- Параметры:
-
urls- URL-адреса, с которых следует загружать классы и ресурсы -
parent- родительский загрузчик классов для делегирования -
factory- URLStreamHandlerFactory для использования при создании URL-адресов - Исключения:
-
SecurityException- если существует менеджер безопасности, и его методcheckCreateClassLoaderне разрешает создание загрузчика классов. -
NullPointerException- еслиurlsили любой из его элементов являетсяnull. - См. также:
URLClassLoader
public URLClassLoader(String name, URL[] urls, ClassLoader parent)
URLClassLoader для указанных URL-адресов. URL-адреса будут проверяться в указанном порядке для классов и ресурсов после первой проверки в указанном родительском загрузчике классов. Любой URL-адрес, заканчивающийся '/', предполагается, что он ссылается на каталог. В противном случае URL-адрес предполагается, что он ссылается на файл JAR, который будет загружен и открыт по мере необходимости.- Параметры:
-
name- имя загрузчика классов; илиnullесли не именован -
urls- URL-адреса, с которых следует загружать классы и ресурсы -
parent- родительский загрузчик классов для делегирования - Исключения:
-
IllegalArgumentException- если заданное имя пустое. -
NullPointerException- еслиurlsили любой из его элементов являетсяnull. -
SecurityException- если установлен менеджер безопасности, и его методSecurityManager.checkCreateClassLoader()не разрешает создание загрузчика классов. - С:
- 9
URLClassLoader
public URLClassLoader(String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
URLClassLoader для указанных URL-адресов, родительского загрузчика классов и URLStreamHandlerFactory. Аргумент parent будет использоваться как родительский загрузчик классов для делегирования. Аргумент factory будет использоваться как фабрика обработчиков потоков для получения обработчиков протоколов при создании новых URL-адресов jar.- Параметры:
-
name- имя загрузчика классов; илиnullесли не именован -
urls- URL-адреса, с которых следует загружать классы и ресурсы -
parent- родительский загрузчик классов для делегирования -
factory- URLStreamHandlerFactory для использования при создании URL-адресов - Исключения:
-
IllegalArgumentException- если заданное имя пустое. -
NullPointerException- еслиurlsили любой из его элементов являетсяnull. -
SecurityException- если установлен менеджер безопасности, и его методcheckCreateClassLoaderне разрешает создание загрузчика классов. - С:
- 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
В случае URL-адресов jar: и file: он также закрывает все файлы, которые были открыты им. Если другой поток загружает класс, когда вызывается метод close, то результат этой загрузки неопределён.
Метод прилагает максимальные усилия для закрытия всех открытых файлов, перехватывая IOException внутри. Непроверенные исключения и ошибки не перехватываются. Вызов close для уже закрытого загрузчика не оказывает никакого эффекта.
- Определено:
-
closeв интерфейсеAutoCloseable - Определено:
-
closeв интерфейсеCloseable - Исключения:
-
IOException- если закрытие любого файла, открытого этим загрузчиком классов, привело к IOException. Все такие исключения перехватываются внутри. Если перехвачено только одно исключение, оно перебрасывается повторно. Если перехвачено более одного исключения, то второе и последующие исключения добавляются в качестве подавленных исключений первого перехваченного исключения, которое затем перебрасывается повторно. -
SecurityException- если установлен менеджер безопасности, и он отказывается отRuntimePermission("closeClassLoader") - С:
- 1.7
addURL
protected void addURL(URL url)
Если указанный URL-адрес является null или уже присутствует в списке URL-адресов, или если этот загрузчик закрыт, то вызов этого метода не имеет эффекта.
- Параметры:
-
url- URL-адрес, который нужно добавить в путь поиска URL-адресов
getURLs
public URL[] getURLs()
- Возвращает:
- путь поиска URL-адресов для загрузки классов и ресурсов.
findClass
protected Class<?> findClass(String name) throws ClassNotFoundException
- Переопределяет:
-
findClassв классеClassLoader - Параметры:
-
name- имя класса - Возвращает:
- результирующий класс
- Исключения:
-
ClassNotFoundException- если класс не может быть найден, или если загрузчик закрыт. -
NullPointerException- еслиnameявляетсяnull.
определитьПакет
protected Package definePackage(String name, Manifest man, URL url)
URLClassLoader. Атрибуты, содержащиеся в указанном Manifest, будут использованы для получения информации о версии пакета и его герметизации. Для герметичных пакетов дополнительный URL указывает URL-адрес исходного кода, из которого был загружен пакет.- Параметры:
-
name- имя пакета -
man-Manifest, содержащий информацию о версии пакета и его герметизации -
url- URL-адрес исходного кода пакета, или null, если он отсутствует - Возвращает:
- новый объект
Package - Выбрасывает:
-
IllegalArgumentException- если имя пакета уже определено этим загрузчиком классов
найтиРесурс
public URL findResource(String name)
- Переопределяет:
-
findResourceв классеClassLoader - Параметры:
-
name- имя ресурса - Возвращает:
- объект
URLдля ресурса, илиnullесли ресурс не найден или загрузчик закрыт.
найтиРесурсы
public Enumeration<URL> findResources(String name) throws IOException
- Переопределяет:
-
findResourcesв классеClassLoader - Параметры:
-
name- имя ресурса - Возвращает:
- Перечисление
EnumerationURL. Если загрузчик закрыт, перечисление не содержит элементов. - Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода
получитьРазрешения
protected PermissionCollection getPermissions(CodeSource codesource)
Если протокол этого URL-адреса равен "jar", то предоставленное разрешение основано на разрешении, необходимом для URL-адреса JAR-файла.
Если протокол равен "file" и есть компонент authority, то может быть предоставлено разрешение на подключение к этому узлу и принятие подключений от него. Если протокол равен "file" и путь указывает на файл, то предоставляется разрешение на чтение этого файла. Если протокол равен "file" и путь указывает на каталог, то предоставляется разрешение на чтение всех файлов и (рекурсивно) всех файлов и подкаталогов, содержащихся в этом каталоге.
Если протокол не равен "file", то предоставляется разрешение на подключение к узлу URL и принятие подключений от него.
- Переопределяет:
-
getPermissionsв классеSecureClassLoader - Параметры:
-
codesource- объект codesource - Возвращает:
- разрешения, предоставленные объекту codesource
- Выбрасывает:
-
NullPointerException- еслиcodesourceявляетсяnull.
создатьЭкземпляр
public static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
loadClass возвращаемого URLClassLoader этим методом вызовет метод SecurityManager.checkPackageAccess перед загрузкой класса.- Параметры:
-
urls- URL-адреса для поиска классов и ресурсов -
parent- родительский загрузчик классов для делегирования - Возвращает:
- результирующий загрузчик классов
- Выбрасывает:
-
NullPointerException- еслиurlsили любой из его элементов являетсяnull.
создатьЭкземпляр
public static URLClassLoader newInstance(URL[] urls)
loadClass возвращаемого URLClassLoader этим методом вызовет метод SecurityManager.checkPackageAccess перед загрузкой класса.- Параметры:
-
urls- URL-адреса для поиска классов и ресурсов - Возвращает:
- результирующий загрузчик классов
- Выбрасывает:
-
NullPointerException- еслиurlsили любой из его элементов являетсяnull.
© 1993, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/net/URLClassLoader.html