Класс 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 со схемой jar: (см. JarURLConnection) предполагается, что ссылается на файл JAR. Любой URL со схемой file:, заканчивающийся на '/', предполагается, что ссылается на каталог. В противном случае URL предполагается, что он ссылается на файл JAR, который будет открыт по мере необходимости.
Этот класс загрузчик поддерживает загрузку классов и ресурсов из содержимого файла JAR с несколькими версиями, на который указывает данный URL.
Контекст управления доступом (AccessControlContext) потока, который создал экземпляр URLClassLoader, будет использоваться при последующей загрузке классов и ресурсов.
Загружаемые классы по умолчанию получают разрешение только на доступ к URL-адресам, указанным при создании URLClassLoader.
- С:
- 1.2
Конструкторы
| Конструктор | Описание |
|---|---|
URLClassLoader(String name,
URL[] urls,
ClassLoader parent) | Создаёт новый именованный |
URLClassLoader(String name,
URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory) | Создаёт новый именованный |
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) | Определяет новый пакет по имени в этом |
protected Class<?> | findClass(String name) | Находит и загружает класс с указанным именем из пути поиска URL. |
URL | findResource(String name) | Находит ресурс с указанным именем в пути поиска URL. |
Enumeration<URL> | findResources(String name) | Возвращает перечисление URL, представляющие все ресурсы в пути поиска URL с указанным именем. |
protected PermissionCollection | getPermissions(CodeSource 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, 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 Методы, объявленные в классе 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-адрес со схемой jar: предполагается, что он относится к файлу JAR. Любой URL-адрес со схемой file:, заканчивающийся на '/', предполагается, что он относится к каталогу. В противном случае 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 будет использован в качестве фабрики обработчиков потоков для получения обработчиков протоколов при создании новых URL-адресов jar.
Если существует менеджер безопасности, этот метод сначала вызывает метод менеджера безопасности checkCreateClassLoader, чтобы убедиться, что создание загрузчика классов разрешено.
- Параметры:
-
urls- URL-адреса, с которых нужно загружать классы и ресурсы -
parent- родительский загрузчик классов для делегирования -
factory- URLStreamHandlerFactory, который нужно использовать при создании URL-адресов - Исключения:
-
SecurityException- если существует менеджер безопасности, и его методcheckCreateClassLoaderне разрешает создание загрузчика классов. -
NullPointerException- еслиurlsили любой из его элементов являетсяnull. - См. также:
SecurityManager.checkCreateClassLoader()
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).
- Overrides:
-
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. Все такие исключения перехватываются внутри. Если перехвачено только одно, оно перебрасывается повторно. Если перехвачено более одного исключения, второе и последующие исключения добавляются в качестве подавляющих исключений к первому перехваченному, которое затем перебрасывается повторно. -
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-файлам, загружаются и открываются по мере необходимости, пока класс не будет найден.
- Overrides:
-
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.
- Overrides:
-
findResourceв классеClassLoader - Параметры:
-
name- имя ресурса - Возвращает:
- поток
URLдля ресурса, илиnullесли ресурс не был найден или загрузчик закрыт.
findResources
public Enumeration<URL> findResources(String name)
throws IOException Возвращает перечисление URL, представляющих все ресурсы в пути поиска URL с указанным именем.
- Overrides:
-
findResourcesв классеClassLoader - Параметры:
-
name- имя ресурса - Возвращает:
- Перечисление
EnumerationURL. Если загрузчик закрыт, перечисление не содержит элементов. - Исключение:
-
IOException- если произошла ошибка ввода-вывода
getPermissions
protected PermissionCollection getPermissions(CodeSource codesource)
Возвращает разрешения для данного объекта codesource. Реализация этого метода сначала вызывает super.getPermissions, а затем добавляет разрешения на основе URL объекта codesource.
Если протокол этого URL равен "jar", то разрешение предоставляется на основе разрешения, требуемого URL файла Jar.
Если протокол равен "file" и существует компонент authority, то может быть предоставлено разрешение на подключение к этому хосту и принятие соединений от него. Если протокол равен "file" и путь указывает на файл, то предоставляется разрешение на чтение этого файла. Если протокол равен "file", а путь — это директория, предоставляется разрешение на чтение всех файлов и (рекурсивно) всех файлов и поддиректорий, содержащихся в этой директории.
Если протокол не равен "file", то предоставляется разрешение на подключение к хосту URL и принятие соединений от него.
- Overrides:
-
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/URLClassLoader.html