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();
}
});
което също не работи.
Разреших проблема си, като добавих cd /server1/.. ред към bash скрипта.. и изтрих pd.directory(..) ред. НО този проблем (защо не мога да използвам pd.directory(..) с absolutePath) все още не е решен...???
pwd -L
? Вярвам, чеpwd
по подразбиране дереферира символни връзки. - person Borealid   schedule 22.08.2010