Java:在我的程序中使用其他程序静态方法输出

时间:2013-06-03 09:41:21

标签: java processbuilder

我需要读取由我编写的另一个java程序生成的byte []。 众所周知,java中的main只能返回一个void。这是否意味着我需要使用返回类型为byte []的静态方法编写程序? 如果是的话,我怎么能在我的程序中运行这个方法并在程序中保存它的返回值?这就是我在我的计划中所拥有的:

ProcessBuilder pb = new ProcessBuilder("java.exe","viewer.java","pathToViewer.java");
Process process = pb.start();
InputStream is = process.getInputStream();
byte[] bytes = IOUtils.toByteArray(is);

什么是正确的方法?

1 个答案:

答案 0 :(得分:5)

不,您无法跨JVM实例传递返回值。您必须设计并实现将传递数据的特定协议。您有一个简单的选项是在子流程中写入System.out,这会将数据推送到您的is,因此您的bytes将最终包含子流程所写的内容。