使用ProcessBuilder运行.java文件

我是一个在Windows XP上使用Eclipse工作的新手程序员,我需要运行多个进程(这将是一个多计算机系统的模拟)。 我最初的hackup使用多个线程到多个类,但现在我正在尝试用进程替换线程。

从我的阅读中,我发现ProcessBuilder是最佳选择。 我已经尝试了下面看到的许多版本的输入,但是在我的生活中无法弄清楚如何正确使用它。 我试图运行我以前创建的.java文件作为类(我已经修改)。 我最终只是做了一个虚拟的test.java来确保我的进程正常工作 – 它唯一的function是打印它运行。

我的两个文件的代码如下。 我正确使用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"); } } 

您正在调用.java文件上的java编译器,这不会运行该类。 您可能想要做的是在.class文件上运行java.exe。 (例如“java.exe -cp ./bin Broker.test”,假设您的类文件位于./bin)