Как заменить устаревшие конструкторы 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 .

Другие вопросы по тегам