繁体   English   中英

使用 ProcessBuilder 运行 .java 文件

[英]Run a .java file using ProcessBuilder

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

versions of the input you see below, but cannot for the life of me figure out how to properly use it.从我的阅读中,我了解到 ProcessBuilder 是通往 go 的途径。我已经尝试了您在下面看到的输入的版本,但终究无法弄清楚如何正确使用它。 我正在尝试运行我之前作为类创建的 .java 文件(我已修改)。 我最终只是做了一个虚拟测试。java 以确保我的过程正常工作 - 它唯一的 function 是打印它运行的。

我对这两个文件的代码如下。 我是否正确使用 ProcessBuilder? 这是读取我的子进程的 output 的正确方法吗? 任何帮助将非常感激。

  • 大卫

编辑:解决方案是声明 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。您可能想要做的是在 .class 文件上运行 java.exe。 (即类似“java.exe -cp./bin Broker.test”的东西,假设你的 class 文件在./bin 中)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM