通过java执行linux命令时出错-操作员>;未为参数类型java.lang.String定义

通过java执行linux命令时出错-操作员>;未为参数类型java.lang.String定义,java,linux,Java,Linux,我试图通过Java API运行一个shell命令,但我得到一个错误-“运算符>对于参数类型Java.lang.String是未定义的” 我不确定上述声明是否有遗漏。如有任何想法,将不胜感激。谢谢 .exec("$commandString . " 2> " . $stderr_file . " > " . $stdout_file, $output, $rcode"); ^--start/end-----^

我试图通过Java API运行一个shell命令,但我得到一个错误-“运算符>对于参数类型Java.lang.String是未定义的”

我不确定上述声明是否有遗漏。如有任何想法,将不胜感激。谢谢

.exec("$commandString . " 2> " . $stderr_file . " > " . $stdout_file, $output, $rcode");
       ^--start/end-----^                                         what's this for? --^
          java string
现在您完成java字符串,进入
2>
,这对java来说没有任何逻辑意义。也许你的意思更像

.exec("$commandString" . " 2> " . $stderr_file . " > " . $stdout_file, $output, $rcode");
                     ^---

但请注意,即使这样也没有意义。对于构建字符串,可以使用
+
,而不是
。这是Java,不是PHP。

您需要转义作为命令一部分的引号,
$name
也是字符串文字,不会被名为
name
的变量的内容替换。另外,
>2
是一个特定于shell的选项,即它告诉shell转移命令的stderr,它作为
exec
命令的一部分没有任何意义。与
相同。这些字符串将像其他任何参数一样传递给命令。
.exec("$commandString" . " 2> " . $stderr_file . " > " . $stdout_file, $output, $rcode");
                     ^---