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/現在のパスを作成するにはどうすればよいですか?
言い換えると
public ProcessBuilderディレクトリ(ファイルディレクトリ)がディレクトリを正規ファイルに変換する理由。絶対ファイルパスを使用するにはどうすればよいですか?
私もハックソルンを試しました
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(..)行を削除することで、問題を解決しました。しかし、この問題(absolutePathでpd.directory(..)を使用できない理由)はまだ回答されていません... ???