Java运行时exec

时间:2012-06-27 09:20:29

标签: java command runtime system exec

我正在尝试使用Java中的system exec做一些事情

Runtime.getRuntime().exec(command);

令人惊讶的是,与路径,目录和文件相关的所有内容都无法正常运行

我不明白为什么,只是想知道有没有替代

3 个答案:

答案 0 :(得分:4)

另一种方法是使用ProcessBuilder类,它有一个更清晰的接口,但你的主要问题可能与操作系统如何处理命令行有关,并且没有太多的Java可以帮助你那个。

答案 1 :(得分:2)

如上所述,cd是内置的shell。即它不是可执行文件。您可以使用以下方法确定:

$ which cd
cd: shell built-in command

由于它不是独立的可执行文件,Runtime.exec()将无法对其执行任何操作。

您可能最好编写一个shell脚本来执行特定于shell的操作(例如,更改工作目录),然后使用Runtime.exec()执行该shell脚本。您可以在脚本中设置PATH变量等,并让Java只执行您的脚本。

吸引人们的一件事是你必须使用脚本的stdout / stderr(即使你扔掉它)。如果您没有正确地执行此操作,您的过程可能会阻止。有关详细信息,请参阅this SO answer

答案 2 :(得分:0)

exec()方法可以带三个参数。第三个是您的子进程应该用作其工作目录的目录。无论如何,这解决了你的“cd”问题。