私はWindowsXPのEclipseで作業している初心者プログラマーであり、複数のプロセスを実行する必要があります(これはマルチコンピューターシステムのシミュレーションになります)。私の最初のハックアップでは、複数のクラスに対して複数のスレッドを使用していましたが、現在はスレッドをプロセスに置き換えようとしています。
私の読書から、ProcessBuilderが進むべき道であることがわかりました。以下に示す入力の多くのバージョンを試しましたが、それを適切に使用する方法を一生理解することはできません。以前にクラスとして作成した(変更した).javaファイルを実行しようとしています。最終的には、ダミーのtest.javaを作成して、プロセスが正しく機能していることを確認しました。その唯一の機能は、実行されたことを印刷することです。
2つのファイルの私のコードは以下のとおりです。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");
}
}