วันนี้ฉันพบปัญหาแปลก ๆ เมื่อทำการเรียก Java ไปยังคำสั่งบีบอัดของ Windows รหัสมีดังนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
สตริง cmd = "C:/Program Files (x86)/WinRAR/rar.exe ac:/test.rar c:/test.log";
//System.out.println(cmd);
กระบวนการ proc = Runtime.getRuntime().exec(cmd);
โค้ดข้างต้นทำงานได้ตามปกติอย่างสมบูรณ์บน Xp, win7 และ windows server2003 หลังจากโค้ดถูกโอนไปยัง Windows Server2008 แล้ว จะมีการแจ้งข้อยกเว้นของ Java โดยตรง
หลังจากการวิจัยเป็นเวลาสองชั่วโมง โค้ดด้านบนก็ได้รับการแก้ไขดังนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
สตริง[] cmd ={"C:/Program Files (x86)/WinRAR/rar.exe", "a","C:/test.rar" ,"c:/test.log"};
//System.out.println(cmd);
กระบวนการ proc = Runtime.getRuntime().exec(cmd);
มันเป็นเรื่องปกติ ข้อดีอีกประการของการเขียนด้วยวิธีนี้คือสามารถแก้ปัญหาช่องว่างในเส้นทางไฟล์ ฯลฯ