2

私は現在プログラムを書いていますが、次のメインメソッドを実行すると、Eclipseがメインごとに個別のコンソールを自動的に開くことができるかどうか疑問に思いました。

public static void main(String[] args) {
    object1.main(args);
    object2.main(args);
    object3.main(args);
    object4.main(args);
}

私の現在の解決策は、各メインメソッドを実行し、[選択したコンソールの表示]オプション内で表示する適切なメソッドを選択することですが、プログラムをテストするたびに非常に面倒なプロセスです。ご提案をいただければ幸いです。

ありがとう

4

1 に答える 1

1

main別のメソッド内からメソッドを複数回呼び出す場合main、これは他の静的メソッドを複数回呼び出すことと同じです。特に、プログラムのこれらすべてのインスタンスは同じJVMで実行されます。

代わりに、単純なAntスクリプトを使用して、プログラムの複数のインスタンスを開始できます。次に例を示します。

<?xml version="1.0"?>
<project name="Test" default="run_external">
    <target name="compile">
        <delete dir="bin" />
        <mkdir dir="bin" />
        <javac srcdir="src" destdir="bin" />
    </target>
    <target name="run_many" depends="compile">
        <parallel>
            <java classname="test.Main" classpath="bin" />
            <!-- copy-paste 'java' block for more instances -->
        </parallel>
    </target>
    <target name="run_external" depends="compile">
        <parallel>
            <exec executable="xterm" dir="bin">
                <arg value="-e" />
                <arg value="java test.Main" />
            </exec>
            <!-- copy-paste 'exec' block for more instances -->
        </parallel>
    </target>
</project>

このスクリプトは3つのターゲットを定義します。そのうちのどれが実行されるかは、defaultパラメーターで決定されます。

  • 最初のターゲット、は、ディレクトリ内のすべてのソースをビルドするためcompileに呼び出すだけです。これは、他のターゲットが実行される前に自動的に実行されます。javacsrc
  • 2番目のターゲットでrun_manyあるは、Mainクラスを数回並行して開始するだけです。各インスタンスは個別のJVMで実行されますが、これらすべてのインスタンスの出力はEclipseのコンソールウィンドウで混同されます。
  • 3番目のターゲットは、それぞれのJavaプロセスを実行run_externalするxtermターミナルエミュレータを起動します。つまり、プログラムのインスタンスごとに、新しいターミナルがポップアップするはずです。(Windowsでこれを行う場合は、使用する必要がある場合がありますcmd.exe。)

これがあなたが探していたものであるかどうかわからない。お役に立てれば。

于 2013-02-17T20:15:19.433 に答える