URL から StreamSource を得るには

今まで、URI を経由して

URL url = 〜;
new StreamSource(new File(url.toURI())));

としていたが、下記のように openStream を使用した方がいいことがわかった。

new StreamSource(url.openStream());

URL が「jar:file:/C:/xxx」のようなときに URI 経由だと解決できずに URI is not hierarchical となってしまう。