Класс URLClassLoader
- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- java.net.URLClassLoader
- Все реализованные интерфейсы:
- Closeable, AutoCloseable
- Непосредственные известные подклассы:
- MLet
public class URLClassLoader extends SecureClassLoader implements Closeable
Этот класс загрузчик используется для загрузки классов и ресурсов из пути поиска URL, ссылающихся на JAR-файлы и каталоги. Любой URL, заканчивающийся на «/», предполагается, что он ссылается на каталог. В противном случае URL предполагается, что он ссылается на JAR-файл, который будет открыт по мере необходимости.
Контекст доступа (AccessControlContext) потока, создавшего экземпляр URLClassLoader, будет использован при последующей загрузке классов и ресурсов.
Классы, которые загружаются, по умолчанию получают разрешение только на доступ к URL, указанным при создании URLClassLoader.
- С тех пор:
- 1.2
Конструкторы
| Конструктор и описание |
|---|
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) Определяет новый пакет по имени в этом ClassLoader. |
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 и родительского загрузчика классов. |
Методы, унаследованные от класса java.security.SecureClassLoader
defineClass, defineClass Методы, унаследованные от класса java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
URLClassLoader
public URLClassLoader(URL[] urls,
ClassLoader parent) Создаёт новый URLClassLoader для заданных URL-адресов. URL-адреса будут просматриваться в указанном порядке для классов и ресурсов после предварительного поиска в указанном родительском загрузчике классов. Любой URL, заканчивающийся на '/', предполагается, что он ссылается на каталог. В противном случае URL предполагается, что он ссылается на JAR-файл, который будет загружен и открыт по мере необходимости.
Если существует менеджер безопасности, этот метод сначала вызывает метод checkCreateClassLoader менеджера безопасности, чтобы убедиться, что создание загрузчика классов разрешено.
- Параметры:
-
urls- URL-адреса, с которых нужно загружать классы и ресурсы -
parent- родительский загрузчик классов для делегирования - Исключения:
-
SecurityException- если менеджер безопасности существует и его методcheckCreateClassLoaderне разрешает создание загрузчика классов. -
NullPointerException- еслиurlsявляетсяnull. - См. также:
SecurityManager.checkCreateClassLoader()
URLClassLoader
public URLClassLoader(URL[] urls)
Создаёт новый URLClassLoader для указанных URL-адресов с использованием стандартного родительского загрузчика делегирования ClassLoader. URL-адреса будут просматриваться в указанном порядке для классов и ресурсов после предварительного поиска в родительском загрузчике классов. Любой URL, заканчивающийся на '/', предполагается, что он ссылается на каталог. В противном случае URL предполагается, что он ссылается на JAR-файл, который будет загружен и открыт по мере необходимости.
Если существует менеджер безопасности, этот метод сначала вызывает метод checkCreateClassLoader менеджера безопасности, чтобы убедиться, что создание загрузчика классов разрешено.
- Параметры:
-
urls- URL-адреса, с которых нужно загружать классы и ресурсы - Исключения:
-
SecurityException- если менеджер безопасности существует и его методcheckCreateClassLoaderне разрешает создание загрузчика классов. -
NullPointerException- еслиurlsявляетсяnull. - См. также:
SecurityManager.checkCreateClassLoader()
URLClassLoader
public URLClassLoader(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory) Создаёт новый URLClassLoader для указанных URL-адресов, родительского загрузчика классов и URLStreamHandlerFactory. Аргумент parent будет использоваться как родительский загрузчик классов для делегирования. Аргумент factory будет использоваться как фабрика обработчиков потоков для получения обработчиков протоколов при создании новых JAR-URL.
Если существует менеджер безопасности, этот метод сначала вызывает метод checkCreateClassLoader менеджера безопасности, чтобы убедиться, что создание загрузчика классов разрешено.
- Параметры:
-
urls- URL-адреса, с которых нужно загружать классы и ресурсы -
parent- родительский загрузчик классов для делегирования -
factory- URLStreamHandlerFactory, используемый при создании URL-адресов - Исключения:
-
SecurityException- если менеджер безопасности существует и его методcheckCreateClassLoaderне разрешает создание загрузчика классов. -
NullPointerException- еслиurlsявляетсяnull. - См. также:
SecurityManager.checkCreateClassLoader()
Методы
getResourceAsStream
public InputStream getResourceAsStream(String name)
Возвращает поток ввода для чтения указанного ресурса. Если этот загрузчик закрыт, все ресурсы, открытые этим методом, будут закрыты.
Порядок поиска описан в документации для ClassLoader.getResource(String).
- Переопределяет:
-
getResourceAsStreamв классеClassLoader - Параметры:
-
name- Имя ресурса - Возвращает:
- Поток ввода для чтения ресурса или
nullесли ресурс не найден - С тех пор:
- 1.7
close
public void close()
throws IOException Закрывает URLClassLoader, чтобы он больше не мог использоваться для загрузки новых классов или ресурсов, определённых этим загрузчиком. Классы и ресурсы, определённые любым из родителей этого загрузчика в иерархии делегирования, по-прежнему доступны. Также доступны все уже загруженные классы и ресурсы.
В случае URL-адресов jar: и file: он также закрывает все файлы, которые были открыты им. Если другой поток загружает класс во время вызова метода close, то результат этой загрузки не определён.
Метод делает всё возможное, чтобы закрыть все открытые файлы, перехватывая исключения IOException внутри. Непроверяемые исключения и ошибки не перехватываются. Вызов close для уже закрытого загрузчика не имеет эффекта.
- Определено в:
-
closeв интерфейсеCloseable - Определено в:
-
closeв интерфейсеAutoCloseable - Исключения:
-
IOException- если закрытие любого файла, открытого этим загрузчиком, привело к исключению IOException. Все такие исключения перехватываются внутри. Если перехвачено только одно, оно повторно генерируется. Если перехвачено более одного исключения, второе и последующие исключения добавляются как исключения, подавляющие первое перехваченное исключение, которое затем повторно генерируется. -
SecurityException- если установлен менеджер безопасности и он отказывается отRuntimePermission("closeClassLoader") - С тех пор:
- 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)
throws IllegalArgumentException Определяет новый пакет по имени в этом ClassLoader. Атрибуты, содержащиеся в указанном 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 Возвращает перечисление URL-адресов, представляющих все ресурсы в пути поиска URL-адресов, имеющие указанное имя.
- Переопределяет:
-
findResourcesв классеClassLoader - Параметры:
-
name- имя ресурса - Возвращает:
- перечисление
EnumerationобъектовURLЕсли загрузчик закрыт, перечисление будет пустым. - Исключения:
-
IOException- если возникает исключение I/O
getPermissions
protected PermissionCollection getPermissions(CodeSource codesource)
Возвращает разрешения для данного объекта codesource. Реализация этого метода сначала вызывает super.getPermissions, а затем добавляет разрешения на основе URL-адреса codesource.
Если протокол этого URL-адреса «jar», то разрешение предоставляется на основе разрешения, необходимого для URL-адреса JAR-файла.
Если протокол «file» и есть компонент authority, то разрешение на подключение к этому органу и принятие подключений от него может быть предоставлено. Если протокол «file» и путь указывает на файл, то разрешение на чтение этого файла предоставляется. Если протокол «file» и путь является каталогом, разрешение предоставляется на чтение всех файлов и (рекурсивно) всех файлов и подкаталогов, содержащихся в этом каталоге.
Если протокол не «file», то разрешение на подключение к хосту URL-адреса и принятие подключений от него предоставляется.
- Переопределяет:
-
getPermissionsв классеSecureClassLoader - Параметры:
-
codesource- codesource - Возвращает:
- разрешения, предоставленные codesource
- Исключения:
-
NullPointerException- еслиcodesourceявляетсяnull.
newInstance
public static URLClassLoader newInstance(URL[] urls,
ClassLoader parent) Создаёт новый экземпляр URLClassLoader для указанных URL-адресов и родительского загрузчика классов. Если установлен менеджер безопасности, метод loadClass возвращённого этим методом URLClassLoader вызовет метод SecurityManager.checkPackageAccess перед загрузкой класса.
- Параметры:
-
urls- URL-адреса для поиска классов и ресурсов -
parent- родительский загрузчик классов для делегирования - Возвращает:
- результирующий загрузчик классов
- Исключения:
-
NullPointerException- еслиurlsявляетсяnull.
newInstance
public static URLClassLoader newInstance(URL[] urls)
Создает новый экземпляр URLClassLoader для указанных URL-адресов и родительского загрузчика классов по умолчанию. Если установлен менеджер безопасности, метод loadClass возвращаемого URLClassLoader вызовет SecurityManager.checkPackageAccess перед загрузкой класса.
- Параметры:
-
urls- URL-адреса для поиска классов и ресурсов - Возвращает:
- результирующий загрузчик классов
- Исключения:
-
NullPointerException- еслиurlsявляетсяnull.
© 1993, 2020, 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.