Как заменить устаревшие конструкторы URL-адресов в Java 20?
Все конструкторы URL-адресов устарели в Java 20. я заменилnew URL(protocol, host, file)
кnew URI(protocol, host, file, null).toURL()
поскольку у меня нет запроса и фрагмента, но я не знаю, что делать с остальными:
/home/gouessej/Documents/programmation/java/workspace/Ardor3D/ardor3d-core/src/main/java/com/ardor3d/util/UrlUtils.java:40: warning: [deprecation] URL(String) in URL has been deprecated
return new URL(new URL(url), relativeLoc);
^
/home/gouessej/Documents/programmation/java/workspace/Ardor3D/ardor3d-core/src/main/java/com/ardor3d/util/UrlUtils.java:40: warning: [deprecation] URL(URL,String) in URL has been deprecated
return new URL(new URL(url), relativeLoc);
^
/home/gouessej/Documents/programmation/java/workspace/Ardor3D/ardor3d-core/src/main/java/com/ardor3d/util/resource/SimpleResourceLocator.java:94: warning: [deprecation] URL(URL,String) in URL has been deprecated
final URL rVal = new URL(_baseDir.toURL(), spec);
^
/home/gouessej/Documents/programmation/java/workspace/Ardor3D/ardor3d-audio/src/main/java/com/ardor3d/audio/FilenameURL.java:125: warning: [deprecation] URL(String) in URL has been deprecated
url = new URL( filename );
Простоnew URI(filename).toURL()
выполнить работу в последнем случае?
Когда я сравниваю формулировку в документации Java, я понимаю, что схема URI означает более или менее протокол URL, хост URI — это хост URL, а файл URL соответствует пути URI и дополнительному запросу URI. Каков точный эквивалентnew URL(spec)
иnew URL(context, spec)
?
Я подготовил некоторые предложенные изменения , но они не работают, выдается исключение IllegalArgumentException.
1 ответ
вр; доктор
- Чтобы создать URL-адрес, используйте.
- Чтобы создать URL-адрес на основе, (1) вызовите, (2) тогда .
Подробности
Понять это:
java.net.URL
— это древний класс, появившийся в Java 1. Этот класс не кодирует и не декодирует какие-либо компоненты URL-адресов в соответствии с механизмом экранирования RFC 2396 .java.net.URI
класс появился позже, в Java 4.
Прочтите эту заметку от команды Java: Oracle: Информация по обеспечению качества — JDK 20: Устаревшие общедоступные конструкторы URL-адресов . Цитировать:
В JDK 20 будут отменены все общедоступные конструкторы java.net.URL. … Чтобы создать URL-адрес,Вместо этого следует отдать предпочтение альтернативе. Чтобы построить
file:
URL-адрес на основе,Path::toURI
следует использовать доURI::toURL
.
И см. примечание об устаревании конструктора в JavadocURL
сорт.
См. также страницу отслеживания проблем, JDK-8294241 Устаревшие общедоступные конструкторы URL .