Hari ini saya mengalami masalah aneh ketika melakukan panggilan Java ke perintah kompresi Windows. Kodenya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
String cmd = "C:/Program Files (x86)/WinRAR/rar.exe ac:/test.rar c:/test.log";
//Sistem.keluar.println(cmd);
Proses proc = Runtime.getRuntime().exec(cmd);
Kode di atas dijalankan secara normal pada Xp, win7, dan windows server2003. Setelah kode ditransfer ke Windows Server2008, pengecualian java langsung diminta.
Setelah dua jam penelitian, kode di atas diubah sebagai berikut:
Copy kode kodenya sebagai berikut:
String[] cmd ={"C:/Program Files (x86)/WinRAR/rar.exe", "a","C:/test.rar" ,"c:/test.log"};
//Sistem.keluar.println(cmd);
Proses proc = Runtime.getRuntime().exec(cmd);
Itu normal. Keuntungan lain menulis dengan cara ini adalah dapat mengatasi masalah spasi pada jalur file, dll.