You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java NIO中Paths.get("/","/")在Windows报错Linux正常如何解决?

解决Windows下Paths.get("/","/")抛出InvalidPathException的问题

这个坑我之前踩过,核心原因是Linux和Windows的路径解析逻辑完全不一样:

  • 在Linux上,路径解析器会自动合并多个连续的根斜杠/,所以Paths.get("/","/")最终会被解析成合法的根路径/,自然没问题。
  • 但在Windows上,java.nio.fs.WindowsPathParser会把以双斜杠开头的路径识别为UNC路径(也就是我们常说的网络共享路径,格式是\\主机名\共享名)。当你传入两个/时,拼接后变成/\/,转成Windows风格的路径就是\\,但这个路径缺少必要的主机名,所以直接抛出InvalidPathException,提示"UNC path is missing hostname"。

几个可行的解决方案:

  • 直接使用单个根路径:如果你的需求就是获取系统根目录,完全没必要传两个/,直接写Paths.get("/")就好,跨平台都能正常解析(Windows上会映射到当前默认盘符的根目录,比如C:\)。

  • 用normalize()规范化路径:如果是动态场景下不小心生成了重复的根路径,可以调用Path.normalize()方法让系统自动处理路径格式:

Path path = Paths.get("/", "/").normalize();
// Windows下会输出当前盘根目录,比如C:\;Linux下输出/
  • 使用系统原生分隔符构建路径:为了更严谨的跨平台兼容,可以通过FileSystems获取当前系统的路径分隔符和根目录:
// 获取当前系统的根目录(Windows会取默认盘根,Linux取/)
Path rootPath = FileSystems.getDefault().getRootDirectories().iterator().next();

这样处理后,不管在Linux还是Windows环境下,路径解析都能符合系统规则,不会再出现异常了。

内容的提问来源于stack exchange,提问作者Subhabrata Mondal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:33:42