Сегодня я столкнулся со странной проблемой при вызове Java команды сжатия Windows. Код выглядит следующим образом:
Скопируйте код кода следующим образом:
String cmd = "C:/Program Files (x86)/WinRAR/rar.exe ac:/test.rar c:/test.log";
//System.out.println(cmd);
Процесс proc = Runtime.getRuntime().exec(cmd);
Приведенный выше код выполняется совершенно нормально на Xp, Win7 и Windows Server2003. После переноса кода на Windows Server2008 напрямую запрашивается исключение Java.
После двух часов исследований приведенный выше код был изменен следующим образом:
Скопируйте код кода следующим образом:
String[] cmd ={"C:/Program Files (x86)/WinRAR/rar.exe", "a","C:/test.rar" ,"c:/test.log"};
//System.out.println(cmd);
Процесс proc = Runtime.getRuntime().exec(cmd);
Это нормально. Еще одним преимуществом такого способа написания является то, что он может решить проблему пробелов в пути к файлу и т. д.