Apologies if this an old topic, however the following test program: package com.viavi;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import java.io.File; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; public class Main { public static void main(String[] args) { System.out.println("URI is " + makeURI()); URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); System.out.println("URI is " + makeURI()); } private static URI makeURI() { try { File file = new File("C:/Users"); final URL url = new URL("file:///" + file.getAbsolutePath()); return url.toURI(); } catch (MalformedURLException x) { x.printStackTrace(); return null; } catch (URISyntaxException x) { x.printStackTrace(); return null; } } } gives the following output: URI is file:/C:/Users URI is null java.net.URISyntaxException: Illegal character in path at index 8: file:/C:\Users at java.net.URI$Parser.fail(URI.java:2848) at java.net.URI$Parser.checkChars(URI.java:3021) at java.net.URI$Parser.parseHierarchical(URI.java:3105) at java.net.URI$Parser.parse(URI.java:3053) at java.net.URI.<init>(URI.java:588) at java.net.URL.toURI(URL.java:946) at com.viavi.Main.makeURI(Main.java:23) at com.viavi.Main.main(Main.java:16) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) That is, it seems that registering the FsUrlStreamHandlerFactory disrupts the subsequent creation of Windows "file" URLs. I encountered this on 2.6.5, and have reproduced in 3.0.0 - alpha2. I believe I have a fair understanding of the root of the issue. Is this of interest to anybody? Thanks Simon