以下在 Java 中不起作用(引发异常):
Runtime.getRuntime().exec("cd mydir; myprog");
在 PHP 中也可以正常工作:
exec("cd mydir; myprog");
Java 的实现到底有什么不同,为什么(乍一看似乎更有限)?
以下在 Java 中不起作用(引发异常):
Runtime.getRuntime().exec("cd mydir; myprog");
在 PHP 中也可以正常工作:
exec("cd mydir; myprog");
Java 的实现到底有什么不同,为什么(乍一看似乎更有限)?
java exec 命令不使用系统命令解释器。诸如“cd mydir; myprog”之类的东西取决于系统命令行解释器(例如在 windowscmd
上,在 linux 上sh
)将其拆分为 2 个单独的命令并执行每个命令。java 不调用系统命令解释器,所以这不起作用。您要么需要单独调用每个命令,要么自己调用所需的解释器作为命令行的一部分。
我见过有人遇到这样的问题,我相信有几种方法,但是我看到大多数人回复的方法是这样的。在它之前添加 cmd 。
Runtime.getRuntime().exec("cmd cd mydir; myprog");
假设您在服务器上的 CLI 环境中运行的是小程序,而不是 Java?如果是这样,那么您的 Java 运行时运行在客户端计算机上,而不是服务器上。
Java 还有一种比分号更好的方法来处理多个命令。而不是使用签名:
Runtime.exec(String)
尝试对每个命令使用它:
Runtime.exec(String[])
并使命令的每个参数成为 String 数组中的元素。