Windows 没有 symlink,但有一个 mklink 工具能在 NTFS 上创建类似 Linux 的符号链接,从而让一些需要绝对路径的操作变成相对路径,避免一些跨 linux 和 windows 的程序在解析带盘符路径时遇到问题。
然而鸡掰 Java 虚拟机总是将 mklink 创建的 symlink 还原回原始路径,让这个方法不可用。
可能是 Java 适配了 window 的 symlink,并把它当成传统的快捷方式,不改变代码时类似./def/temp(<==>E:\abc\temp)的地址会变成访问 E:\abc\temp,这样在访问类似./def/temp/../ 的路径时,Java 实际在访问 E:\abc 或者./def/E/abc/../ 这样的路径,而不是./def,让一些没有做系统适配的程序出问题。
请问如何修改设置避免 windows 上 Java 将 symlink 解析回源路径。
1
nannanziyu 2021-04-02 11:07:08 +08:00
https://docs.oracle.com/javase/8/docs/api/java/nio/file/LinkOption.html
默认行为是 Follow,也就是原始路径; NOFOLLOW_LINKS,不寻找原始路径 |
2
Osk 2021-04-02 11:36:10 +08:00 via Android
我记得 mklink 有几种参数,试试其它类型的 link ?
|
3
laqow OP |