Класс URL
- Все реализуемые интерфейсы:
Serializable
public final class URL extends Object implements Serializable
URL представляет собой унифицированный указатель ресурсов (URL), указывающий на «ресурс» во Всемирной паутине. Ресурсом может быть что-то простое, например файл или каталог, либо ссылка на более сложный объект, такой как запрос к базе данных или поисковой системе. Подробнее Как правило, URL можно разделить на несколько частей. Рассмотрим следующий пример:
http://www.example.com/docs/resource1.html
Приведённый выше URL указывает, что используется протокол http (протокол передачи гипертекста), а информация находится на хост-компьютере с именем www.example.com. Информация на этом хост-компьютере называется /docs/resource1.html. Точное значение этого имени на хост-компьютере зависит как от протокола, так и от хоста. Обычно информация хранится в файле, но может создаваться и динамически. Этот компонент URL называется компонентом пути.
URL может дополнительно указывать «порт» — номер порта, по которому устанавливается TCP-соединение с удалённым хост-компьютером. Если порт не указан, используется порт протокола по умолчанию. Например, порт по умолчанию для http — 80. Можно указать другой порт:
http://www.example.com:1080/docs/resource1.html
Синтаксис URL определён в RFC 2396: унифицированные идентификаторы ресурсов (URI): общий синтаксис с поправками, внесёнными в RFC 2732: формат литеральных IPv6-адресов в URL. Формат литерального IPv6-адреса также поддерживает идентификаторы областей действия (scope_id). Синтаксис и использование идентификаторов областей действия описаны здесь.
К URL может быть добавлен «фрагмент», также называемый «ref» или «ссылкой». Фрагмент обозначается символом решётки «#», за которым следуют дополнительные символы. Например:
http://www.example.com/index.html#chapter1
Технически этот фрагмент не является частью URL. Вместо этого он указывает, что после получения указанного ресурса приложение интересует именно та часть документа, к которой прикреплён тег chapter1. Значение тега зависит от ресурса.
Приложение также может указать «относительный URL», содержащий только сведения, необходимые для доступа к ресурсу относительно другого URL. Относительные URL часто используются в HTML-страницах. Например, если содержимое URL:
http://www.example.com/index.html
FAQ.html
http://www.example.com/FAQ.html
Относительный URL не обязан указывать все компоненты URL. Если протокол, имя хоста или номер порта отсутствуют, их значения наследуются из URL, заданного полностью. Компонент файла необходимо указать. Необязательный фрагмент не наследуется.
Создание экземпляров URL
Конструкторы java.net.URL устарели. Разработчикам рекомендуется использовать java.net.URI для разбора или создания URL. Если для открытия соединения требуется экземпляр
java.net.URL, можно использовать URI для создания или разбора строки URL, при необходимости вызвав URI.parseServerAuthority(), чтобы проверить возможность разбора компонента authority как полномочий на основе сервера, а затем вызвать URI.toURL() для создания экземпляра URL. Согласно спецификации, конструкторы URL должны выбрасывать MalformedURLException, однако фактически выполняемый разбор и проверка зависят от реализации. Часть разбора и проверки может быть отложена до более позднего момента, когда будет вызвана реализация обработчика потока. Возможность создать экземпляр URL не гарантирует его соответствия спецификации синтаксиса URL.
Класс URL не выполняет кодирование или декодирование компонентов URL в соответствии с механизмом экранирования, определённым в RFC 2396. Вызывающий код отвечает за кодирование полей, требующих экранирования перед вызовом URL, а также за декодирование любых экранированных полей, возвращаемых URL. Кроме того, поскольку URL ничего не знает об экранировании URL, он не распознаёт эквивалентность закодированной и декодированной форм одного и того же URL. Например, два URL: http://foo.com/hello%20world и http://foo.com/hello world/ считаются неравными.
Обратите внимание: класс URI в некоторых случаях выполняет экранирование своих компонентов. Рекомендуемый способ управления кодированием и декодированием URL — использовать URI и преобразовывать объекты этих двух классов друг в друга с помощью toURI() и URI.toURL().
Классы URLEncoder и URLDecoder также можно использовать, но только для кодирования данных HTML-форм, которое отличается от схемы кодирования, определённой в RFC 2396.
- Примечание к API:
-
При работе с путями к файлам и URI файлов приложениям следует тщательно выбирать подходящие методы для преобразования между ними. Фабричный метод
Path.of(URI)и конструкторFile(URI)можно использовать для создания объектовPathилиFileиз URI файла. МетодыPath.toUri()иFile.toURI()можно использовать для созданияURIиз пути к файлу, который затем можно преобразовать в URL с помощьюURI.toURL(). Приложениям не следует пытаться создавать или разбиратьURLпо строковому представлению объектаFileилиPath.Перед созданием
URLизURIи в зависимости от используемого протокола приложениям следует проверить, можно ли разобрать полномочия URI как полномочия на основе сервера.Некоторые компоненты URL или URI, например userinfo, могут использоваться для создания вводящих в заблуждение URL или URI. Приложениям, работающим с URL или URI, следует учитывать рекомендации, приведённые в разделе 7 «Вопросы безопасности» RFC 3986.
Все конструкторы
URLмогут выбрасыватьMalformedURLException. В частности, если нижележащая реализацияURLStreamHandlerотклоняет или заведомо отклонит любой из параметров, может быть выброшеноMalformedURLException. Как правило, конструктор, вызывающий метод parseURL обработчика потока, может выброситьMalformedURLException, если нижележащая реализация этого метода в обработчике потока выброситIllegalArgumentException. Однако то, какие проверки выполняют обработчики потока, зависит от реализации, и вызывающим сторонам не следует полагаться на эти проверки для полной валидации URL. - Начиная с версии:
- 1.0
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
URL |
Устарел. |
URL |
Устарел. Используйте URI.toURL() для создания экземпляра URL. |
URL |
Устарел. Используйте of(URI, URLStreamHandler) для создания экземпляра URL, связанного с пользовательским обработчиком протокола. |
URL |
Устарел. Используйте URI.toURL() для создания экземпляра URL. |
URL |
Устарел. Используйте URI.toURL() для создания экземпляра URL. |
URL |
Устарел. Используйте of(URI, URLStreamHandler) для создания экземпляра URL, связанного с пользовательским обработчиком протокола. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает этот URL с другим объектом на предмет равенства. |
String |
getAuthority() |
Возвращает часть authority этого URL. |
final Object |
getContent() |
Возвращает содержимое этого URL. |
final Object |
getContent |
Возвращает содержимое этого URL. |
int |
getDefaultPort() |
Возвращает номер порта по умолчанию протокола, связанного с этим URL. |
String |
getFile() |
Возвращает имя файла этого URL. |
String |
getHost() |
Возвращает имя хоста этого URL, если применимо. |
String |
getPath() |
Возвращает часть пути этого URL. |
int |
getPort() |
Возвращает номер порта этого URL. |
String |
getProtocol() |
Возвращает имя протокола этого URL. |
String |
getQuery() |
Возвращает часть query этого URL. |
String |
getRef() |
Возвращает фрагмент (также известный как «ссылка») этого URL. |
String |
getUserInfo() |
Возвращает часть userInfo этого URL. |
int |
hashCode() |
Создает целое число, подходящее для индексации в хеш-таблице. |
static URL |
of |
Создает URL из URI, как если бы был вызван uri.toURL(), связывая его при этом с указанным URLStreamHandler, если это разрешено. |
URLConnection |
openConnection() |
Возвращает экземпляр URLConnection, представляющий соединение с удаленным объектом, на который ссылается URL. |
URLConnection |
openConnection |
То же, что и openConnection(), но соединение устанавливается через указанный прокси-сервер; обработчики протоколов, не поддерживающие работу через прокси-сервер, проигнорируют параметр прокси-сервера и установят обычное соединение. |
final InputStream |
openStream() |
Открывает соединение с этим URL и возвращает InputStream для чтения из этого соединения. |
boolean |
sameFile |
Сравнивает два URL, не учитывая компонент фрагмента. |
static void |
setURLStreamHandlerFactory |
Задает URLStreamHandlerFactory приложения. |
String |
toExternalForm() |
Создает строковое представление этого URL. |
String |
toString() |
Создает строковое представление этого URL. |
URI |
toURI() |
Возвращает URI, эквивалентный этому URL. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарел, подлежит удалению: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
URL
@Deprecated(since="20") public URL(String protocol, String host, int port, String file) throws MalformedURLException
URI.toURL(). Подробнее см. примечание об устаревании конструкторов.URL из указанных protocol, host, port номера и file. host может быть задано как имя хоста или буквальный IP-адрес. Если используется буквальный IPv6-адрес, его следует заключить в квадратные скобки ('[' и ']'), как указано в RFC 2732; однако также принимается формат буквального IPv6-адреса, определенный в RFC 2373: архитектура адресации IP версии 6.
Указание значения port номера -1 означает, что для URL должен использоваться порт протокола по умолчанию.
Если это первый объект URL, создаваемый с указанным протоколом, для этого протокола создается объект обработчика потокового протокола — экземпляр класса URLStreamHandler:
- Если приложение ранее настроило экземпляр
URLStreamHandlerFactoryв качестве фабрики обработчиков потоков, для создания обработчика потокового протокола вызывается методcreateURLStreamHandlerэтого экземпляра, которому в качестве аргумента передается строка протокола. - Если
URLStreamHandlerFactoryеще не настроена или методcreateURLStreamHandlerфабрики возвращаетnull, для поиска реализаций URLStreamHandlerProvider с помощью загрузчика классов системы используется механизм ServiceLoader. Порядок поиска поставщиков зависит от реализации; реализация может кэшировать найденных поставщиков. Ошибка ServiceConfigurationError,ErrorилиRuntimeException, возникшая вcreateURLStreamHandler, если она встретилась, будет передана вызывающему потоку. Для каждого созданного поставщика вызывается методcreateURLStreamHandlerс передачей строки протокола, пока поставщик не вернет ненулевое значение или не будут проверены все поставщики. - Если на предыдущем этапе обработчик протокола не найден, конструктор считывает значение системного свойства:
Если значение этого системного свойства не равноjava.protocol.handler.pkgsnull, оно интерпретируется как список пакетов, разделенных вертикальной чертой '|'. Конструктор пытается загрузить класс с именем:
где<package>.<protocol>.Handler<package>заменяется именем пакета, а<protocol>— именем протокола. Если этот класс не существует или существует, но не является подклассомURLStreamHandler, выполняется попытка загрузить следующий пакет из списка. - Если на предыдущем этапе обработчик протокола не найден, конструктор пытается загрузить встроенный обработчик протокола. Если этот класс не существует или существует, но не является подклассом
URLStreamHandler, выбрасываетсяMalformedURLException.
На пути поиска гарантированно присутствуют обработчики протоколов для следующих протоколов:
httphttpsfilejar
Этот конструктор не выполняет проверку входных данных.
- Параметры:
-
protocol— имя используемого протокола. -
host— имя хоста. -
port— номер порта на хосте. -
file— файл на хосте - Исключения:
-
MalformedURLException— если указан неизвестный протокол или номер порта является отрицательным числом, отличным от -1, либо если реализация нижележащего обработчика потоков отклоняет или заведомо отклонитURL - Внешние спецификации
- См. также:
URL
@Deprecated(since="20") public URL(String protocol, String host, String file) throws MalformedURLException
URI.toURL(). Подробнее см. примечание об устаревании конструкторов.protocol, имени host и имени file. Используется порт по умолчанию для указанного протокола. Этот конструктор эквивалентен четырехаргументному конструктору, за исключением того, что для указанного протокола используется порт по умолчанию. Этот конструктор не выполняет проверку входных данных.
- Параметры:
-
protocol— имя используемого протокола. -
host— имя хоста. -
file— файл на хосте. - Исключения:
-
MalformedURLException— если указан неизвестный протокол либо если реализация нижележащего обработчика потоков отклоняет или заведомо отклонитURL - См. также:
URL
@Deprecated(since="20") public URL(String protocol, String host, int port, String file, URLStreamHandler handler) throws MalformedURLException
of(URI, URLStreamHandler). Подробнее см. примечание об устаревании конструкторов.URL из указанных protocol, host, port номера, file и handler. Указание значения port номера -1 означает, что для URL должен использоваться порт протокола по умолчанию. Указание значения handler null означает, что для протокола должен использоваться обработчик потоков по умолчанию, как описано для: URL(java.lang.String, java.lang.String, int, java.lang.String) Этот конструктор не выполняет проверку входных данных.- Параметры:
-
protocol— имя используемого протокола. -
host— имя хоста. -
port— номер порта на хосте. -
file— файл на хосте -
handler— обработчик потоков для URL. - Исключения:
-
MalformedURLException— если указан неизвестный протокол или номер порта является отрицательным числом, отличным от -1, либо если реализация нижележащего обработчика потоков отклоняет или заведомо отклонитURL - См. также:
URL
@Deprecated(since="20") public URL(String spec) throws MalformedURLException
URI.toURL(). Подробнее см. примечание об устаревании конструкторов.URL из представления String. Этот конструктор эквивалентен вызову двухаргументного конструктора с аргументом null в качестве первого аргумента.
- Параметры:
-
spec—Stringдля разбора в качестве URL. - Исключения:
-
MalformedURLException— если протокол не указан или найден неизвестный протокол, илиspecимеет значениеnull, или разобранный URL не соответствует синтаксису, заданному для связанного протокола, или метод parseURL нижележащего обработчика потоков выбрасываетIllegalArgumentException - См. также:
URL
@Deprecated(since="20") public URL(URL context, String spec) throws MalformedURLException
URI.toURL(). Подробнее см. примечание об устаревании конструкторов.<scheme>://<authority><path>?<query>#<fragment>
Если компонент схемы указан в данной спецификации и не совпадает со схемой контекста, новый URL создается как абсолютный URL только на основе спецификации. В противном случае компонент схемы наследуется от контекстного URL.
Если в спецификации присутствует компонент полномочий, она рассматривается как абсолютная, а полномочия и путь из спецификации заменяют полномочия и путь контекста. Если компонент полномочий в спецификации отсутствует, полномочия нового URL наследуются из контекста.
Если компонент пути спецификации начинается с символа косой черты «/», путь считается абсолютным, а путь из спецификации заменяет путь контекста.
В противном случае путь считается относительным и добавляется к пути контекста, как описано в RFC 2396. Кроме того, в этом случае путь канонизируется путем устранения изменений каталога, вызванных вхождениями «..» и «.».
Более подробное описание разбора URL см. в RFC 2396.
- Требования к реализации:
- Разбор URL включает вызов метода
parseURLвыбранного обработчика. - Параметры:
-
context— контекст, в котором разбирается спецификация. -
spec—Stringдля разбора в качестве URL. - Исключения:
-
MalformedURLException— если протокол не указан или найден неизвестный протокол, илиspecимеет значениеnull, или разобранный URL не соответствует синтаксису, заданному для связанного протокола, или метод parseURL нижележащего обработчика потоков выбрасываетIllegalArgumentException - См. также:
URL
@Deprecated(since="20") public URL(URL context, String spec, URLStreamHandler handler) throws MalformedURLException
of(URI, URLStreamHandler) для создания экземпляра URL, связанного с обработчиком пользовательского протокола. Подробнее см. примечание об устаревании конструктора.- Требования к реализации:
- Разбор URL включает вызов метода
parseURLвыбранного обработчика. - Параметры:
-
context— контекст, в котором разбирается спецификация. -
spec—String, разбираемый как URL. -
handler— обработчик потока для URL. - Исключения:
-
MalformedURLException— если протокол не указан, обнаружен неизвестный протокол,specравенnull, разобранный URL не соответствует конкретному синтаксису связанного протокола или метод parseURL базового обработчика потока выбрасываетIllegalArgumentException - См. также:
Подробное описание методов
of
public static URL of(URI uri, URLStreamHandler handler) throws MalformedURLException
uri.toURL(), но связывает его с указанным URLStreamHandler, если это разрешено.- Примечание API:
- Перед созданием
URLи открытием соединения приложениям следует рассмотреть возможность выполнения дополнительных проверок целостности. См. примечание API в документации API на уровне класса. - Требования к реализации:
- Реализация этого метода включает вызов метода
parseURLвыбранного обработчика. - Параметры:
-
uri—URI, на основе которого должен быть создан возвращаемыйURL -
handler— пользовательский обработчик потока протокола для возвращаемогоURL. Может быть равенnull; в этом случае будет использован обработчик потока протокола по умолчанию, если он существует. - Возвращает:
- новый экземпляр
URL, созданный из указанногоURIи связанный с указаннымURLStreamHandler, если он задан - Исключения:
-
NullPointerException— еслиuriравенnull -
IllegalArgumentException— если протокол не указан (null— это схема uri) или еслиURLStreamHandlerне равенnullи не может быть установлен для указанного протокола -
MalformedURLException— если обнаружен неизвестный протокол, указанный URI не соответствует конкретному синтаксису связанного протокола или метод parseURL базового обработчика потока выбрасываетIllegalArgumentException - С момента:
- 20
- См. также:
getQuery
public String getQuery()
URL.- Возвращает:
- часть запроса этого
URLилиnull, если она отсутствует - С момента:
- 1.3
getPath
public String getPath()
URL.- Возвращает:
- часть пути этого
URLили пустую строку, если она отсутствует - С момента:
- 1.3
getUserInfo
public String getUserInfo()
URL.- Возвращает:
- часть userInfo этого
URLилиnull, если она отсутствует - С момента:
- 1.3
getAuthority
public String getAuthority()
URL.- Возвращает:
- часть полномочий этого
URL - С момента:
- 1.3
getPort
public int getPort()
URL.- Возвращает:
- номер порта или -1, если порт не задан
getDefaultPort
public int getDefaultPort()
URL. Если схема URL или URLStreamHandler для URL не определяет номер порта по умолчанию, возвращается -1.- Возвращает:
- номер порта
- С момента:
- 1.4
getProtocol
public String getProtocol()
URL.- Возвращает:
- протокол этого
URL.
getHost
public String getHost()
URL, если применимо. Формат хоста соответствует RFC 2732: для буквального IPv6-адреса этот метод возвращает IPv6-адрес, заключенный в квадратные скобки ('[' и ']').- Возвращает:
- имя хоста этого
URL.
getFile
public String getFile()
URL. Возвращаемая часть файла совпадает с getPath(), дополненным значением getQuery(), если оно есть. Если часть запроса отсутствует, этот метод и getPath() возвращают одинаковые результаты.- Возвращает:
- имя файла этого
URLили пустую строку, если оно отсутствует
getRef
public String getRef()
URL.- Возвращает:
- якорь (также известный как «ссылка») этого
URLилиnull, если он отсутствует
equals
public boolean equals(Object obj)
Если указанный объект не является URL, этот метод немедленно возвращает false.
Два объекта URL равны, если у них одинаковый протокол, эквивалентные хосты, одинаковый номер порта на хосте, а также одинаковые файл и фрагмент файла.
Два хоста считаются эквивалентными, если имена обоих хостов разрешаются в одинаковые IP-адреса; если разрешить имя хотя бы одного хоста не удается, имена хостов должны совпадать без учета регистра; либо оба имени хостов должны быть равны null.
Поскольку сравнение хостов требует разрешения имен, эта операция является блокирующей.
Примечание. Известно, что определенное поведение equals несовместимо с виртуальным хостингом в HTTP.
hashCode
sameFile
public boolean sameFile(URL other)
Возвращает true, если этот URL и аргумент other равны без учета компонента фрагмента.
- Параметры:
-
other—URLдля сравнения. - Возвращает:
-
true, если они ссылаются на один и тот же удаленный объект; в противном случае —false.
toString
toExternalForm
public String toExternalForm()
URL. Строка создается вызовом метода toExternalForm обработчика потокового протокола для этого объекта.- Возвращает:
- строковое представление этого объекта.
- См. также:
toURI
public URI toURI() throws URISyntaxException
URI, эквивалентный этому URL. Этот метод работает так же, как new URI (this.toString()). Обратите внимание: любой экземпляр URL, соответствующий RFC 2396, можно преобразовать в URI. Однако некоторые URL, строго не соответствующие этому стандарту, преобразовать в URI нельзя.
- Возвращает:
- экземпляр URI, эквивалентный этому URL.
- Исключения:
-
URISyntaxException— если этот URL не отформатирован строго в соответствии с RFC 2396 и не может быть преобразован в URI. - С момента:
- 1.5
openConnection
public URLConnection openConnection() throws IOException
URLConnection, представляющий соединение с удаленным объектом, на который ссылается URL. Новый экземпляр URLConnection создается при каждом вызове метода URLStreamHandler.openConnection(URL) обработчика протокола для этого URL.
Следует отметить, что экземпляр URLConnection не устанавливает фактическое сетевое соединение при создании. Это происходит только при вызове URLConnection.connect().
Если для протокола URL (например, HTTP или JAR) существует общедоступный специализированный подкласс URLConnection, принадлежащий одному из следующих пакетов или их подпакетов: java.lang, java.io, java.util, java.net, возвращаемое соединение будет экземпляром этого подкласса. Например, для HTTP будет возвращен HttpURLConnection, а для JAR — JarURLConnection.
- Возвращает:
URLConnection, связанный с URL.- Исключения:
-
IOException— если возникает исключение ввода-вывода. - См. также:
openConnection
public URLConnection openConnection(Proxy proxy) throws IOException
openConnection(), за исключением того, что соединение будет установлено через указанный прокси; обработчики протоколов, не поддерживающие прокси, проигнорируют параметр прокси и установят обычное соединение. Вызов этого метода отменяет действие настроек ProxySelector по умолчанию в системе.- Параметры:
-
proxy— прокси, через который будет установлено соединение. Если требуется прямое соединение, следует указать Proxy.NO_PROXY. - Возвращает:
URLConnectionк URL.- Исключения:
-
IOException— если возникает исключение ввода-вывода. -
IllegalArgumentException— если прокси равен null или имеет неверный тип -
UnsupportedOperationException— если подкласс, реализующий обработчик протокола, не поддерживает этот метод. - С:
- 1.5
- См. также:
openStream
public final InputStream openStream() throws IOException
URL и возвращает InputStream для чтения из этого соединения. Этот метод является сокращённой записью следующего кода: openConnection().getInputStream()
- Возвращает:
- поток ввода для чтения из соединения с URL.
- Исключения:
-
IOException— если возникает исключение ввода-вывода. - См. также:
getContent
public final Object getContent() throws IOException
openConnection().getContent()
- Возвращает:
- содержимое этого URL.
- Исключения:
-
IOException— если возникает исключение ввода-вывода. - См. также:
getContent
public final Object getContent(Class<?>[] classes) throws IOException
openConnection().getContent(classes)
- Параметры:
-
classes— массив типов Java - Возвращает:
- объект содержимого этого URL, который является первым совпадением с типами, указанными в массиве классов. null, если ни один из запрошенных типов не поддерживается.
- Исключения:
-
IOException— если возникает исключение ввода-вывода. - С:
- 1.3
- См. также:
setURLStreamHandlerFactory
public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
URLStreamHandlerFactory приложения. Этот метод можно вызвать не более одного раза в данной виртуальной машине Java. Экземпляр URLStreamHandlerFactory используется для создания обработчика потокового протокола по имени протокола.
- Параметры:
-
fac— требуемая фабрика. - Исключения:
-
Error— если приложение уже задало фабрику. - См. также:
© 1993, 2025, 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.
URI.toURL()для создания экземпляра URL.