我是一名在Windows XP上使用Eclipse工作的新手程序员,我需要运行多个进程(这将是一个多计算机系统的模拟)。我最初的hackup使用多个线程到多个类,但现在我正在尝试用进程替换线程。
从我的阅读中,我发现ProcessBuilder是要走的路。我已经尝试了下面看到的很多很多版本的输入,但是在我的生活中不能弄清楚如何正确使用它。我试图运行我以前创建的.java文件作为类(我已修改)。我最终只是做了一个虚拟的test.java来确保我的进程正常工作 - 它唯一的功能是打印它运行。
我的两个文件的代码如下。我正确使用ProcessBuilder吗?这是读取子进程输出的正确方法吗?任何帮助将不胜感激。
编辑:解决方案是声明ProcessBuilder(“java.exe”,“ - cp”,“bin”,“Broker.test”);
主要流程
package Control;
import java.io.*;
import java.lang.*;
public class runSPARmatch {
/**
* @param args
*/
public static void main(String args[]) {
try {
ProcessBuilder broker = new ProcessBuilder("javac.exe","test.java","src\\Broker\\");
Process runBroker = broker.start();
Reader reader = new InputStreamReader(runBroker.getInputStream());
int ch;
while((ch = reader.read())!= -1)
System.out.println((char)ch);
reader.close();
runBroker.waitFor();
System.out.println("Program complete");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
子
package Broker;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("This works");
}
}
答案 0 :(得分:5)
您正在调用.java文件上的java编译器,这不会运行该类。您可能想要做的是在.class文件上运行java.exe。 (例如“java.exe -cp ./bin Broker.test”,假设你的类文件是./bin)