エラーが発生します:
IllegalArgumentException : Executable name has embedded quote,
split the arguments
実行中
Runtime.getRuntime().exec(cmd, envTokens, file1);
私は Windows7 と Java7 マシンを使用しています。
他の環境でも同じコード行が正常に機能します。
何らかの方法を提案してください。
エラーが発生します:
IllegalArgumentException : Executable name has embedded quote,
split the arguments
実行中
Runtime.getRuntime().exec(cmd, envTokens, file1);
私は Windows7 と Java7 マシンを使用しています。
他の環境でも同じコード行が正常に機能します。
何らかの方法を提案してください。
これは、Java 7 update 21 / Java 6 update 45の変更が原因で発生します。
問題の解決策は、代わりにjava.lang.ProcessBuilderを使用するようにコードをリファクタリングすることです。例えば:
ProcessBuilder pb = new ProcessBuilder("command", "argument1", "argument2");
Map<String, String> env = pb.environment();
env.put("var1", "value1");
Process p = pb.start();
パラメータを String 配列に入れる必要があります。
String a = quote(exeFullPath);
String b = paramB;
String[] cmd = new String[]{a,b};
Process myExec = Runtime.getRuntime().exec(cmd, null, parentFolder);