2010-08-22 105 views
1
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/是等价的(安装在同一个地方,/工作/ ..是正确的路径和/ server1/work/..是挂载的),但我需要在/server1/work/uz/rt/adapt/0/下工作,因为其他一些服务器只能通过该路径工作。如何使/server1/work/uz/rt/adapt/0/当前的路径?

换句话说

为什么公众的ProcessBuilder目录(文件目录) 转换目录到文件规范。我如何使用绝对文件路径?

我也尝试破解SOLN”

 pb.directory(new File("/asr1/work/oguz/rt/adaptMLLR2/0/"){ 
      public File getCanonicalFile(){ 
       return this.getAbsoluteFile(); 
      } 
      public String getCanonicalPath() { 
       return this.getAbsolutePath(); 
      } 

     }); 

其没有工作,以及。

我解决了我的问题,通过将cd/server1/..行添加到bash脚本..并删除了pd.directory(..)行。但这个问题(为什么我不能使用pd.directory(..)与绝对路径)尚未回答...?

+0

server1是共享网络资源吗? – AndHeCodedIt 2010-08-22 16:54:40

+0

它是物理服务器。其他服务器可以通过path/server1/..访问。有共享文件,server1中的文件夹。 – ogzylz 2010-08-22 16:57:55

+0

Windows或Unix服务器? – AndHeCodedIt 2010-08-22 17:17:25

回答

0

使用shell的cd实用程序似乎是一个合适的解决方案。另一种方法是将PWD环境变量设置为具有符号链接的路径名,但这很难看,除非您自动获取ProcessBuilder

请注意,如果shell不是当前目录的绝对路径名,它将忽略PWD,而是向系统请求没有符号链接的绝对路径名。

相关问题