exec怎样调用java.exe执行java类文件_使用Runtime.getRuntime()。exec()执行Java文件...

小编典典

首先,您的命令行看起来不正确。执行命令与批处理文件不同,它不会执行一系列命令,而只会执行一个命令。

从外观上看,您正在尝试更改要执行的命令的工作目录。一个更简单的解决方案是使用ProcessBuilder,它将允许您指定给定命令的起始目录…

例如…

try {

ProcessBuilder pb = new ProcessBuilder("java.exe", "testfile");

pb.directory(new File("C:\Users\sg552\Desktop"));

pb.redirectError();

Process p = pb.start();

InputStreamConsumer consumer = new InputStreamConsumer(p.getInputStream());

consumer.start();

p.waitFor();

consumer.join();

} catch (IOException | InterruptedException ex) {

ex.printStackTrace();

}

//...

public class InputStreamConsumer extends Thread {

private InputStream is;

private IOException exp;

public InputStreamConsumer(InputStream is) {

this.is = is;

}

@Override

public void run() {

int in = -1;

try {

while ((in = is.read()) != -1) {

System.out.println((char)in);

}

} catch (IOException ex) {

ex.printStackTrace();

exp = ex;

}

}

public IOException getException() {

return exp;

}

}

ProcessBuilder 还可以更轻松地处理可能在其中包含空格的命令,而不必将引号引起来。

2020-11-30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值