今日、Windows 圧縮コマンドへの Java 呼び出しを行うときに奇妙な問題が発生しました。コードは次のとおりです。
次のようにコードをコピーします。
文字列 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 例外が直接プロンプトされます。
2 時間の調査の後、上記のコードは次のように変更されました。
次のようにコードをコピーします。
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);
それは正常です。この方法で書くことのもう 1 つの利点は、ファイル パス内のスペースなどの問題を解決できることです。