我有一个项目使用ProcessBuilder来捕获命令“java -jar someJar.jar -argument”的输出,但现在已经将jar的源文件移动到一个单独的包中; somepackage。该包有一个main函数,所以我想创建一个ProcessBuilder来捕获该进程的输出,就好像它是一个不同的Thread。
这是可能的,还是我必须完全重写代码以允许它使用源文件而不是二进制文件?
答案 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