2010-08-22 89 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,而是向系統請求沒有符號鏈接的絕對路徑名。

相關問題