واجهت اليوم مشكلة غريبة عند إجراء استدعاء Java لأمر ضغط Windows، وكان الكود كما يلي:
انسخ رمز الكود كما يلي:
String 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 مباشرة.
وبعد ساعتين من البحث تم تعديل الكود أعلاه كالتالي:
انسخ رمز الكود كما يلي:
String[] cmd ={"C:/Program Files (x86)/WinRAR/rar.exe", "a", "C:/test.rar" ,"c:/test.log"};
//System.out.println(cmd);
عملية proc = Runtime.getRuntime().exec(cmd);
هذا طبيعي. ميزة أخرى للكتابة بهذه الطريقة هي أنها يمكن أن تحل مشكلة المسافات في مسار الملف، وما إلى ذلك.