【发布时间】:2010-08-22 16:47:20
【问题描述】:
ProcessBuilder pb = new ProcessBuilder("pwd");
pb.directory(new File("/server1/work/uz/rt/adapt/0/"));
Process s = pb.start();
我希望输出是/server1/work/uz/rt/adapt/0/,但结果却是:
/work/uz/rt/adapt/0/
/work/uz/rt/adapt/0/ 和/server1/work/uz/rt/adapt/0/ 是等价的(安装在同一个地方,/work/.. 是正确的路径,/server1/work/.. 是安装的路径),但我需要在/server1/work/uz/rt/adapt/0/ 下工作因为其他一些服务器只能通过该路径工作。
如何使/server1/work/uz/rt/adapt/0/ 成为当前路径?
换句话说
为什么要公开 ProcessBuilder 目录(文件目录) 将目录转换为规范文件。如何使用绝对文件路径??
我也尝试了破解解决方案
pb.directory(new File("/asr1/work/oguz/rt/adaptMLLR2/0/"){
public File getCanonicalFile(){
return this.getAbsoluteFile();
}
public String getCanonicalPath() {
return this.getAbsolutePath();
}
});
这也没用。
我通过在 bash 脚本中添加 cd /server1/.. 行来解决我的问题.. 并删除了 pd.directory(..) 行。但是这个问题(为什么我不能将 pd.directory(..) 与 absolutePath 一起使用)尚未得到解答...???
【问题讨论】:
-
server1是共享网络资源吗?
-
是物理服务器。其他服务器可以通过路径/server1/...访问。 server1中有共享文件、文件夹..
-
你试过运行
pwd -L吗?我相信pwd默认会取消引用符号链接。 -
密码不是问题。它仅用于调试目的。当我从 server2 调用时,它说我找不到路径 /work/.. ,因为它必须是 /server1/work/.. 。路径 /work/.. 对 server2 不可用,但符号引用 /server1/work/..
标签: java unix process processbuilder