ProcessBuilder pb = new ProcessBuilder(command);
pb.directory(new File(path));
int runningStatus = 0;
Process process;
try {
process = pb.start();
BufferedReader errReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
BufferedReader staReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
new Thread(() -> {
String line;
try {
while ((line = staReader.readLine()) != null) {
} catch (IOException e) {
e.printStackTrace();
}).start();
new Thread(() -> {
String line;
try {
while ((line = errReader.readLine()) != null) {
if (line.startsWith("step=")) {
log.info("----开始下载:{}-----", line);
} catch (IOException e) {
e.printStackTrace();
}).start();
runningStatus = process.waitFor();
errReader.close();
staReader.close();
} catch (InterruptedException e) {
log.error("error:" + e.getLocalizedMessage());
} catch (IOException e) {
throw new RuntimeException(e);
增加两个线程(也可以不使用线程)获取getErrorStream()
和getInputStream()
,把这两个inputStream中的数据读出来,就可以继续运行程序了。
使用Jenkins的版本为2.138.3,下载war包后启动即可运行:
# 指定使用8080端口,可自定义
java -jar jenkins.war --httpPort=8080
建议后台启动,命令如下:
# 1. 启动
# 指定后台启动
nohup java -jar jenkins.war --httpPort=8080 &
# 再指定日志路径
appending o...
ProcessBuilder可以用来运行外部应用程序。在我使用过程中发现了一些需要注意的地方,这些小问题也着实费了我很长时间去调试。不过既然知道了,就最好写出来,避免后来者再次出错。
首先,尽管ProcessBuilder可以用来运行外部程序,但不是所有能在shell中执行的命令都能被ProcessBuilder完美执行。以Windows系统为例,Windows批处理程序中常使用输出流/输入流/
public class ProcessBuilderDemo {
public void exeLocalCommand(String exportCmd) throws Exception{
ProcessBuilder builder;
String charSet;
使用processBuilder执行shell命令并与之交互
private void execReloadAll(){
List<String> cmds = new ArrayList<String>();
commands.add("ls");
commands.add("-l");
commands.add("/");
ProcessBuilder pb=new ProcessBuilder(c
我正在尝试从Java执行bash脚本,它返回错误/ bin / bash:’/ home / nika / NetBeansProjects / Parallel Framework / process-executor.sh’:没有这样的文件或目录,我正在使用ubuntu使用netbeans8& 14.04 jdk8.
这是我的代码:
public class Process {
public static void main(String[] args) {
try {
Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序)。
Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。
ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin,stdout,stderr)操作都将通过三...