寻找匹配的“”错误时出现EOF

Cra*_*gic 1 java linux runtime eof

sh -c "cd /home/dipankar/NetBeansProjects/TransBench/Hindi;./mat"
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

请帮助我是Linux新手。

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

Ste*_*n C 5

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

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

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

    ....exec(new String[]{
            "sh", 
            "-c", 
            "cd /home/dipankar/NetBeansProjects/TransBench/Hindi;./mat"
    });
Run Code Online (Sandbox Code Playgroud)