以下内容在Java中不起作用(抛出异常):
Runtime.getRuntime().exec("cd mydir; myprog");
同样适用于PHP:
exec("cd mydir; myprog");
Java的实现到底有什么不同?为什么(乍一看似乎更有限)?
答案 0 :(得分:2)
java exec命令不使用系统命令解释程序。像“cd mydir; myprog”这样的东西依赖于系统命令行解释器(例如在Linux cmd
上,在linux sh
上)将它分成两个单独的命令并执行它们中的每一个。 java不会调用系统命令解释器,因此不起作用。您需要单独调用每个命令,或者自己调用所需的解释器作为命令行的一部分。
答案 1 :(得分:0)
我看到人们有这样的问题,我确信有几种方法,但是我见过大多数人回答的是这个。在它之前添加cmd。
Runtime.getRuntime().exec("cmd cd mydir; myprog");
答案 2 :(得分:-1)
假设您在服务器上的CLI环境中运行applet而不是Java?如果是这样,那么您的Java运行时正在客户端计算机上运行,而不是在服务器上运行。
与分号相比,Java还有更好的方法来处理多个命令。而不是使用签名:
Runtime.exec(String)
尝试对每个命令使用它:
Runtime.exec(String[])
并使命令的每个参数成为String数组中的一个元素。