java.net.URISyntaxException异常

新手上路,请多包涵

我有这个例外。但此异常不会再次重现。我想知道这个的原因

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.

为什么会出现这个异常。怎么处理就不会重现了。

原文由 aayushi soni 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

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

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

如果要将路径名转换为“文件:”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 的平台上运行。 (涉及在路径名上使用字符串攻击的其他解决方案不可移植。)

但是您需要意识到“文件:”URI 有许多注意事项,如 File.toURI() 方法的 javadoc 中所述。例如,在一台机器上创建的“文件:”URI 通常表示另一台机器上的不同资源(或根本没有资源)。

原文由 Stephen C 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题