Spec-Zone.ru › OpenJDK 8

Класс 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 с использованием родительского делегата по умолчанию 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)

Определяет новый пакет по имени в этом 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.

Spec-Zone.ru

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