Heute ist bei einem Java-Aufruf des Windows-Komprimierungsbefehls ein seltsames Problem aufgetreten. Der Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
String cmd = "C:/Program Files (x86)/WinRAR/rar.exe ac:/test.rar c:/test.log";
//System.out.println(cmd);
Prozess proc = Runtime.getRuntime().exec(cmd);
Der obige Code wird auf XP, Win7 und Windows Server 2003 völlig normal ausgeführt. Nachdem der Code auf Windows Server 2008 übertragen wurde, wird direkt eine Java-Ausnahme ausgelöst.
Nach zwei Stunden Recherche wurde der obige Code wie folgt geändert:
Kopieren Sie den Codecode wie folgt:
String[] cmd ={"C:/Programme (x86)/WinRAR/rar.exe", "a", "C:/test.rar" ,"c:/test.log"};
//System.out.println(cmd);
Prozess proc = Runtime.getRuntime().exec(cmd);
Es ist normal. Ein weiterer Vorteil dieser Schreibweise besteht darin, dass das Problem von Leerzeichen im Dateipfad usw. gelöst werden kann.