0

以下在 Java 中不起作用(引发异常):

Runtime.getRuntime().exec("cd mydir; myprog");

在 PHP 中也可以正常工作:

exec("cd mydir; myprog");

Java 的实现到底有什么不同,为什么(乍一看似乎更有限)?

4

3 回答 3

2

java exec 命令不使用系统命令解释器。诸如“cd mydir; myprog”之类的东西取决于系统命令行解释器(例如在 windowscmd上,在 linux 上sh)将其拆分为 2 个单独的命令并执行每个命令。java 不调用系统命令解释器,所以这不起作用。您要么需要单独调用每个命令,要么自己调用所需的解释器作为命令行的一部分。

于 2011-12-11T17:03:02.957 回答
0

我见过有人遇到这样的问题,我相信有几种方法,但是我看到大多数人回复的方法是这样的。在它之前添加 cmd 。

Runtime.getRuntime().exec("cmd cd mydir; myprog");
于 2011-12-11T16:42:40.997 回答
-1

假设您在服务器上的 CLI 环境中运行的是小程序,而不是 Java?如果是这样,那么您的 Java 运行时运行在客户端计算机上,而不是服务器上。

Java 还有一种比分号更好的方法来处理多个命令。而不是使用签名:

Runtime.exec(String)

尝试对每个命令使用它:

Runtime.exec(String[])

并使命令的每个参数成为 String 数组中的元素。

于 2011-12-11T16:37:56.513 回答