Похоже, вы, вероятно, хотите использовать URL, а не URI (который является более общим и требует менее строгого синтаксиса.)
URI a = new URI("http://www.foo.com");
URI b = new URI("bar.html");
URI c = a.resolve(b);
c.toString() -> "http://www.foo.combar.html"
c.getAuthority() -> "www.foo.com"
c.getPath() -> "bar.html"
URI toString () не ведет себя так, как вы могли бы ожидать, но, учитывая его общую природу, он может быть прощен.
К сожалению, метод toURL () в URI работает не совсем так, как я хотел бы дать вам то, что вы хотите.
URL u = c.toURL();
u.toString() -> "http://www.foo.combar.html"
u.getAuthority() -> "www.foo.combar.html" --- Oh dear :(
Так что лучше всего начать с URL, чтобы получить то, что вы хотите:
URL x = new URL("http://www.foo.com");
URL y = new URL(x, "bar.html");
y.toString() -> "http://www.foo.com/bar.html"