Класс 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-адресов с использованием родительского загрузчика делегирования по умолчанию 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 - имя ресурса
Возвращает:
Перечисление Enumeration URL. Если загрузчик закрыт, перечисление не содержит элементов.
Исключение:
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

Spec-Zone .ru
спецификации, руководства, описания, API