java.net.URISyntaxException

2022-09-01 11:23:35

我有这个例外。但此异常不再重现。我想得到这个的原因

Exception Caught while Checking tag in XMLjava.net.URISyntaxException:
Illegal character in opaque part at index 2:
C:\Documents and Settings\All Users\.SF\config\sd.xml
stacktrace net.sf.saxon.trans.XPathException.

发生此异常的原因。如何处理,这样它就不会重现。


答案 1

有效的 URI 不包含反斜杠,如果它包含 反斜杠,则第一个前面的字符必须是“协议”。::

基本上是一个路径名,而不是一个有效的URI。"C:\Documents and Settings\All Users\.SF\config\sd.xml"

如果要将路径名转换为“file:”URI,请执行以下操作:

File f = new File("C:\Documents and Settings\All Users\.SF\config\sd.xml");
URI u = f.toURI();

这是在 Java 中将路径名转换为有效 URI 的最简单、最可靠、最便携的方法。它应该可以在Windows,Mac,Linux和任何其他支持Java的平台上工作。(涉及在路径名上使用字符串 bashing 的其他解决方案不可移植。

但是您需要意识到“file:”URI有许多警告,如File.toURI()方法的javadocs中所述。例如,在一台计算机上创建的“file:”URI 通常表示另一台计算机上的不同资源(或根本没有资源)。


答案 2

这样做的根本原因是文件路径包含窗口中的正斜杠而不是反斜杠。

请尝试像这样来解决问题:

"file:" + string.replace("\\", "/");