2012-04-10 23 views
4

私はWindows XP上でEclipseで作業している初心者のプログラマで、複数のプロセスを実行する必要があります(これはマルチコンピュータシステムのシミュレーションになります)。最初のハックアップでは、複数のスレッドを複数のクラスに使用していましたが、今はスレッドをプロセスに置き換えようとしています。ProcessBuilderを使用して.javaファイルを実行する

私の読んだところから、私はProcessBuilderを手に入れました。私は多くを試しました多くのあなたの入力のバージョンが表示されますが、私の人生のためにそれを正しく使用する方法を把握することはできません。私は以前にクラスとして作成した.javaファイルを実行しようとしています(これは私が変更したものです)。私は最終的に私のプロセスが正しく動作することを確認するためにダミーのtest.javaを作成しました。その唯一の機能は、実行されたことを表示することです。

2つのファイルのマイコードは以下のとおりです。 ProcessBuilderを正しく使用していますか?これは私のサブプロセスの出力を読み取る正しい方法ですか?どんな助けでも大歓迎です。

  • デビッド

編集:ソリューションは、ProcessBuilderを宣言することです( "のjava.exe" を、 " - CP"、 "ビン"、 "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(); 
    } 
} 

}あなたは.javaファイルのJavaコンパイラを呼び出している

package Broker; 

public class test { 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     System.out.println("This works"); 
    } 
} 

答えて

4

サブプロセス、このクラスを実行しません。あなたがしたいことは、.classファイルでjava.exeを実行することです。 (つまり、あなたのクラスファイルが./binにあると仮定して、 "java.exe -cp ./bin Broker.test"のようなもの)

+1

正確な構文は、ProcessBuilder( "java.exe"、 " - cp "、" bin "、" Broker.test ")。ありがとう! –

+0

Broker.testが別のjarに依存する場合、どのようにjarファイルをProcessBuilderに追加できますか? –

+0

私はそれを得た。使用されたProcessBuilder( "java.exe"、 " - cp"、 "bin:example.jar"、 "Broker.test") –

関連する問題