Hoje encontrei um problema estranho ao fazer uma chamada Java para o comando de compactação do Windows. O código é o seguinte:
Copie o código do código da seguinte forma:
String cmd = "C:/Arquivos de Programas (x86)/WinRAR/rar.exe ac:/test.rar c:/test.log";
//System.out.println(cmd);
Processo proc = Runtime.getRuntime().exec(cmd);
O código acima é executado normalmente no XP, win7 e windows server2003. Depois que o código é transferido para o Windows Server2008, uma exceção java é solicitada diretamente.
Após duas horas de pesquisa, o código acima foi modificado da seguinte forma:
Copie o código do código da seguinte forma:
String[] cmd ={"C:/Arquivos de Programas (x86)/WinRAR/rar.exe", "a","C:/test.rar" ,"c:/test.log"};
//System.out.println(cmd);
Processo proc = Runtime.getRuntime().exec(cmd);
É normal. Outra vantagem de escrever desta forma é que pode resolver o problema de espaços no caminho do arquivo, etc.