Я думал, что эквивалентом нового URL(контекст URL, спецификация строки), который устарел в Java 21, будет context.toURI().resolve(спецификация строки).toURL(). Но те же результаты он дает только в Java 21. Если я использую более старую версию Java, например 17 или 11, я получаю другие результаты. Например, этот код
URL context = new URI("http://example.com").toURL();
for (String spec : Arrays.asList("foo", "/foo", "http://foo.bar")) {
System.out.println(new URL(context, spec));
System.out.println(context.toURI().resolve(spec));
}
выдает этот результат в старых версиях Java
http://example.com/foo
http://example.comfoo
http://example.com/foo
http://example.com/foo
http://foo.bar
http://foo.bar
Подробнее здесь: https://stackoverflow.com/questions/790 ... or-that-al