Hoy encontré un problema extraño al realizar una llamada de Java al comando de compresión de Windows. El código es el siguiente:
Copie el código de código de la siguiente manera:
Cadena cmd = "C:/Archivos de programa (x86)/WinRAR/rar.exe ac:/test.rar c:/test.log";
//System.out.println(cmd);
Proceso de proceso = Runtime.getRuntime().exec(cmd);
El código anterior se ejecuta con total normalidad en Xp, win7 y Windows Server2003. Después de transferir el código a Windows Server2008, se genera directamente una excepción de Java.
Después de dos horas de investigación, el código anterior se modificó de la siguiente manera:
Copie el código de código de la siguiente manera:
String[] cmd ={"C:/Archivos de programa (x86)/WinRAR/rar.exe", "a","C:/test.rar", "c:/test.log"};
//System.out.println(cmd);
Proceso de proceso = Runtime.getRuntime().exec(cmd);
Es normal. Otra ventaja de escribir de esta manera es que puede resolver el problema de los espacios en la ruta del archivo, etc.