首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java ProcessBuilder开始在Linux中顺序执行多个命令

Java ProcessBuilder开始在Linux中顺序执行多个命令
EN

Stack Overflow用户
提问于 2012-09-05 01:30:29
回答 3查看 32.3K关注 0票数 21

我希望使用ProcessBuilder类通过我的Java Application顺序执行2个或更多命令。我已经尝试了其他回复/论坛中建议的多个选项,但没有成功。

以下是我尝试过的方法:

代码语言:javascript
复制
    ProcessBuilder processBuilder = new ProcessBuilder("ls", ";", "pwd");

出现以下错误:

错误: ls:;:无此类文件或目录错误: ls: pwd:无此类文件或目录

代码语言:javascript
复制
    ProcessBuilder processBuilder = new ProcessBuilder("ls", "&&", "pwd");

给我类似的错误:

错误: ls:&&:无此类文件或目录错误: ls: pwd:无此类文件或目录

代码语言:javascript
复制
    List<String> command = new ArrayList<String>();
    command.add("ls");
    command.add(";");
    command.add("pwd");
    ProcessBuilder processBuilder = new ProcessBuilder(command);

出现以下错误:

错误: ls:;:无此类文件或目录错误: ls: pwd:无此类文件或目录

我的操作系统是Linux/Mac-OSX。

EN

回答 3

Stack Overflow用户

发布于 2012-09-05 01:34:54

您的方法等同于使用指定的参数调用ls。在Bash表示法中,您正在运行的是:

代码语言:javascript
复制
ls ';' pwd
ls '&&' pwd

如果您希望lspwd作为单独的命令运行,则可以使用Bash (或其他外壳语言)将它们包装到单个命令中:

代码语言:javascript
复制
bash -c 'ls ; pwd'

你可以这样调用它:

代码语言:javascript
复制
ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "ls ; pwd");
票数 28
EN

Stack Overflow用户

发布于 2019-06-19 18:11:28

我正在使用ProcessBuilder来编译这样的java程序,它对我来说是有效的:

代码语言:javascript
复制
ProcessBuilder b = new ProcessBuilder("cmd.exe","/c","cd " + dir,
            " & javac " + mapClassName + ".java -cp " + pathToProjectClasses);

  • cmd.exe :它启动命令提示符。
  • \c:不确定它在做什么,但很重要,您可以查看此链接以了解更多信息(\? cmd commands)
  • cd + dir :是第一个命令,它将目录更改为某个目录。
  • &:它的意思是在完成第一个命令后启动第二个命令
  • javac:这个单词和字符串的其余部分是第二个命令

<代码>H113-cp:要编译的类使用的外部类的路径。<代码>H214<代码>F215

所以我有两个命令,第一个是cd命令,第二个是javac命令,我使用&依次执行它们。

为我糟糕的写作技巧道歉,如果我没有很好地解释我的代码,请问我任何你想知道的事情。

票数 7
EN

Stack Overflow用户

发布于 2012-09-05 01:35:00

您可以通过第一个命令从ProcessBuilder.start()获取进程,使用waitFor()等待,然后启动第二个命令。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12268550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档