2011-12-11 95 views

回答

2

java的exec命令不使用系统命令解释器。类似于“cd mydir; myprog”的内容取决于系统命令行解释器(例如,在windows cmd上,在linux sh上)将其拆分为2个单独的命令并执行它们中的每一个。 java不会调用系统命令解释器,因此不起作用。您需要分别调用每个命令,或者自己调用所需的解释器作为命令行的一部分。

+0

好的,但我想知道为什么它以这种方式实现?为什么不使用像PHP这样的命令解释器呢?这对我来说看起来是一个不必要的限制。 – Ree

+0

取决于命令行解释程序的帮助可能会与java的平台不可知的企图冲突。显然,当你调用exec时,你可能已经超出了这个领域......一般来说,java一直不愿意允许对原始操作系统进行“原始”访问,并且一般在“最基本”级别提供。在这种情况下,“最基本”级别允许您执行直接命令。 – jtahlborn

-1

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

Java还有更好的方式来处理多个命令而不是你的分号。除了使用签名:

Runtime.exec(String) 

尝试使用此为您的每个命令:

Runtime.exec(String[]) 

,使你的命令的每个参数的字符串数组中的元素。

0

我见过有人有这样的问题,我敢肯定有几种方法,但是我见过的大多数人回复是这样的。在它之前添加cmd。

Runtime.getRuntime().exec("cmd cd mydir; myprog"); 
相关问题