Aujourd'hui, j'ai rencontré un problème étrange lors d'un appel Java à la commande de compression Windows. Le code est le suivant :
Copiez le code comme suit :
Chaîne cmd = "C:/Program Files (x86)/WinRAR/rar.exe ac:/test.rar c:/test.log" ;
//System.out.println(cmd);
Processus proc = Runtime.getRuntime().exec(cmd);
Le code ci-dessus s'exécute tout à fait normalement sur XP, Win7 et Windows Server2003. Une fois le code transféré vers Windows Server2008, une exception Java est directement demandée.
Après deux heures de recherche, le code ci-dessus a été modifié comme suit :
Copiez le code comme suit :
String[] cmd ={"C:/Program Files (x86)/WinRAR/rar.exe", "a","C:/test.rar" ,"c:/test.log"};
//System.out.println(cmd);
Processus proc = Runtime.getRuntime().exec(cmd);
C'est normal. Un autre avantage d'écrire de cette façon est que cela peut résoudre le problème des espaces dans le chemin du fichier, etc.