Nar*_*mar 15 java processbuilder
我想使用ProcessBuilder类通过我的Java Application顺序执行2个或更多命令.我尝试了其他响应/论坛中建议的多个选项,但没有运气.
以下是我尝试过的事情:
ProcessBuilder processBuilder = new ProcessBuilder("ls", ";", "pwd");
Run Code Online (Sandbox Code Playgroud)
给我以下错误:
错误:ls:;:没有这样的文件或目录错误:ls:pwd:没有这样的文件或目录
ProcessBuilder processBuilder = new ProcessBuilder("ls", "&&", "pwd");
Run Code Online (Sandbox Code Playgroud)
给我类似的错误:
错误:ls:&&:没有这样的文件或目录错误:ls:pwd:没有这样的文件或目录
List<String> command = new ArrayList<String>();
command.add("ls");
command.add(";");
command.add("pwd");
ProcessBuilder processBuilder = new ProcessBuilder(command);
Run Code Online (Sandbox Code Playgroud)
给我以下错误:
错误:ls:;:没有这样的文件或目录错误:ls:pwd:没有这样的文件或目录
我的操作系统是Linux/Mac-OSX.
rua*_*akh 24
您的方法等同于ls使用指定的参数调用.在Bash表示法中,您运行的是:
ls ';' pwd
ls '&&' pwd
Run Code Online (Sandbox Code Playgroud)
如果您希望ls并pwd作为单独的命令运行,则可以使用Bash(或其他shell语言)将它们包装到单个命令中:
bash -c 'ls ; pwd'
Run Code Online (Sandbox Code Playgroud)
您可以这样称呼:
ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "ls ; pwd");
Run Code Online (Sandbox Code Playgroud)
小智 7
我正在使用 ProcessBuilder 来编译这样的 Java 程序,它对我有用:
ProcessBuilder b = new ProcessBuilder("cmd.exe","/c","cd " + dir,
" & javac " + mapClassName + ".java -cp " + pathToProjectClasses);
Run Code Online (Sandbox Code Playgroud)
所以我有 2 个命令,第一个是cd命令,第二个是javac命令,我使用&.
抱歉我的写作技巧不好,如果我没有很好地解释我的代码,请向我询问您想知道的任何事情。
| 归档时间: |
|
| 查看次数: |
24528 次 |
| 最近记录: |