Spec-Zone.ru › OpenJDK 17

Класс 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 для указанных URL.
URLClassLoader(String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
Создает новый именованный URLClassLoader для указанных URL, родительского загрузчика классов и URLStreamHandlerFactory.
URLClassLoader(URL[] urls)
Создает новый URLClassLoader для указанных URL с использованием родительского загрузчика делегирования по умолчанию ClassLoader.
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)
Возвращает разрешения для данного объекта 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-адресов, используя родительский загрузчик по умолчанию. 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).

Переопределяет:
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-файлы, загружаются и открываются по мере необходимости, пока класс не будет найден.
Переопределяет:
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)
Находит ресурс с указанным именем в пути поиска URL.
Переопределяет:
findResource в классе ClassLoader
Параметры:
name - имя ресурса
Возвращает:
объект URL для ресурса, или null если ресурс не найден или загрузчик закрыт.

найтиРесурсы

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

получитьРазрешения

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.

создатьЭкземпляр

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

создатьЭкземпляр

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

© 1993, 2021, 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/17/docs/api/java.base/java/net/URLClassLoader.html

Spec-Zone.ru

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