带有文件名空间的Java进程命令

时间:2018-08-20 12:22:37

标签: java linux shell process

我有下面的linux命令通过java程序运行,其中输入文件名中有空格,而执行系统失败

java.io.IOException: Cannot run program "tsp -I afmarker": error=2, No such file or directory

命令:

String[] commandArr = new String[] { "tsp -I afmarker", "/home/test/prad test.mpg" "-P afmarker -a 10 -v 20 -O file", "/home/prad/output.mpg};

Process process = Runtime.getRuntime().exec(commandArr);

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

用字符串数组调用时,Runtime.getRuntime().exec()期望数组的第一个元素是可执行文件的名称,不带任何参数。如果我没记错的话,您的代码正在指示JVM执行名为tsp -I afmarker的命令,并且该命令不存在。 tsp的所有参数应分别指定为传递给exec()的数组的元素。

答案 1 :(得分:1)

尝试将每个参数分开:

String[] commandArr = new String[] {
    "tsp", "-I", "afmarker",
    "/home/test/prad test.mpg",
    "-P", "afmarker", "-a", "10", "-v", "20",
    "-O", "file", "/home/prad/output.mpg"
};