JAVA进程执行中的奇怪错误

JAVA进程执行中的奇怪错误,java,Java,可能重复: 我试图用Java内部的一些参数运行一个进程,在运行特定命令之前,我使用println打印它 现在问题出在Java内部,这个过程做得不好。。它在错误流而不是输出上发送一些错误。但是,如果我在控制台的屏幕上运行Java打印的相同命令,它将非常有效 String command="abc -def -hhij"; System.out.println(command); Process p = Runtime.getRuntime.exec(command); 有人知道出了什么问题吗?

可能重复:

我试图用Java内部的一些参数运行一个进程,在运行特定命令之前,我使用
println
打印它

现在问题出在Java内部,这个过程做得不好。。它在错误流而不是输出上发送一些错误。但是,如果我在控制台的屏幕上运行Java打印的相同命令,它将非常有效

String command="abc -def -hhij";
System.out.println(command);
Process p = Runtime.getRuntime.exec(command);

有人知道出了什么问题吗?

很可能该命令需要该命令的完整路径。C:\dir\abc.exe或其他任何文件

如果是脚本,请确保它由正确的shell执行。

使用StringTokenizer调用Runtime.exec(字符串),它不知道如何处理引用的文本。最简单的修复方法是使用在数组中接受参数的exec

String[] command={ "abc", "-def", "-hhij"};
Process p = Runtime.getRuntime.exec(command);

我会尝试用\:'\\('(double\由于Java转义规则)转义这些“(”)

什么错误?这可能是环境变量问题吗?如果您尝试像
pwd这样的简单命令会发生什么情况?我认为出了问题。出了什么问题?@Shakedown-添加了更多关于出错原因的详细信息。;“语法错误:(意外”。您真正使用的参数是什么?可能需要转义或引用某些参数。@Thilo-带有JAVA打印的参数的命令存在问题,并且在console中运行该命令。此外,我正在使用
println()打印
将正确转义的字符串传递给它。@phatfingers-我已经添加了有问题的ErrorStream的输出。.尝试exec的形式,将字符串[]和每个参数作为单独的字符串。省略引号。@phatfingers-尝试过。.仍然给出相同的错误。括号在“likes(john,Mary)”中吗语句中唯一的括号,或者您是否用“[sample]”替换了一些未显示的其他数据?@pathfingers-它起作用了…正如您在回答中所示。之前,我对它进行了一些修改,以在args中隐藏
”,但这是不对的。当我尝试这样做时,它会显示“无效的转义序列”“@Buxme-您需要在Java:
”中转义
”..\\(`将
\(
放入字符串中。