使用ProcessBuilder捕获单独包的输出

时间:2017-02-23 01:19:24

标签: java processbuilder java-threads

我有一个项目使用ProcessBuilder来捕获命令“java -jar someJar.jar -argument”的输出,但现在已经将jar的源文件移动到一个单独的包中; somepackage。该包有一个main函数,所以我想创建一个ProcessBuilder来捕获该进程的输出,就好像它是一个不同的Thread。

这是可能的,还是我必须完全重写代码以允许它使用源文件而不是二进制文件?

1 个答案:

答案 0 :(得分:0)

如果我假设正确,那么包具有main函数,我们正在尝试输出使用java -jar processbuilder命令执行的main方法。

ProcessBuilder pb = new ProcessBuilder(your java -jar command);     
Process process = pb .start();
process.waitFor();
BufferedInputStream in = new BufferedInputStream(process.getInputStream());
byte[] contents = new byte[1024];
int jwtOytputBytesRead = 0;
String Output = "";
while ((jwtOytputBytesRead = in.read(contents)) != -1) {
            Output += new String(contents, 0, jwtOytputBytesRead);
    }
System.out.println(Output);

尝试此链接以指定该类的主要内容 Run class in Jar file