3
sh -c "cd /home/dipankar/NetBeansProjects/TransBench/Hindi;./mat"

在 linux 终端中执行以下命令时,它可以完美执行。但是,当我尝试使用 java 运行时运行它时,它会给出以下错误:

ERROR>/home/dipankar/NetBeansProjects/TransBench/Hindi;./mat": -c: line 0: unexpected EOF while looking for matching `"'
ERROR>/home/dipankar/NetBeansProjects/TransBench/Hindi;./mat": -c: line 1: syntax error: unexpected end of file

请帮助我是 linux 新手。

Runtime rt = Runtime.getRuntime();               
Process proc = rt.exec("sh -c \"cd /home/dipankar/NetBeansProjects/TransBench/Hindi;./mat\"");
proc.waitFor();
4

1 回答 1

7

鉴于标签和症状,我希望您使用的exec方法将命令作为单个String.

那是行不通的。问题是该方法使用一种非常简单的方案将命令字符串“解析”为命令名称和参数。它只是在有空格的地方分割字符串......忽略任何引用和任何其他 shell 内容。

您需要做的是使用带有String[];的重载。例如

    ....exec(new String[]{
            "sh", 
            "-c", 
            "cd /home/dipankar/NetBeansProjects/TransBench/Hindi;./mat"
    });
于 2013-04-17T09:51:53.423 回答