
Оба пути должны быть либо относительные, либо абсолютные.
Path path1 = Paths.get("/test"); // абсолютный путь
Path path2 = Paths.get("/test/java/my-file.txt"); // абсолютный путь
path2.relativize(path1); // ..\..
path1.relativize(path2); // java\my-file.txt
path1 = Paths.get("test"); // относительный путь
path2 = Paths.get("test/java/my-file.txt"); // относительный путь
path2.relativize(path1); // ..\..
path1.relativize(path2); // java\my-file.txt
Нельзя построить относительный путь, если один из путей абсолютный, а второй относительный и наоборот.
Нельзя построить относительный путь, если абсолютные пути имеют разные корни, например C:\ и D:\.
В обоих этих случаях будет выброшен runtime-исключение IllegalArgumentException.
path1 = Paths.get("C:/test");
path2 = Paths.get("D:/test/java/my-file.txt");
path2.relativize(path1); // IllegalArgumentException
path1.relativize(path2); // IllegalArgumentException