我使用Runtime.getRuntime()。exec(test.class)创建进程并启动test.class文件。
的Test.class:
public class test {
public static void main(String[] args) {
doReturn();
}
public static String doReturn() {
System.out.println("printed output");
return "returned output";
}
}
在启动此过程的Java应用程序中,我想检索此test.class的输出
我使用的代码如下:
Process proc = null;
String[] cmd = { "java", "test"};
proc = Runtime.getRuntime().exec(cmd);
InputStream inputStream = proc.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
while ((line = bufferedReader.readLine()) != null)
{
System.out.println(line);
}
这段代码不起作用:没有打印任何内容,我的流程的退出值为1。
=>我应该如何修改它(和/或修改test.class)以将“打印输出”返回到我的java应用程序? =>是否可以返回“返回的输出”?
(我是Java的新手,所以请你在答案中详细说明!Thx!)
答案 0 :(得分:0)
我不知道你想做什么但是试图删除.class
String[] cmd = { "java", "test"};
答案 1 :(得分:0)
尝试commons exec库。它简化了许多代码,否则你将不得不写。您需要在另一个线程上捕获进程的输入流。在同一个线程上执行它有一些问题..这里的一些信息:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
公共高管图书馆在这里: http://commons.apache.org/exec/