0

アプリケーション内から別のJavaアプリケーションを実行する方法が必要です。その出力をJTextAreaに受け取り、JTextBoxを介して入力を送信したいと思います。

4

1 に答える 1

3

依存します。

カスタムURLClassLoaderを使用して 2 番目のアプリケーション jar をロードし、メイン クラスmainメソッドを直接呼び出すことができます。明らかに、問題はプログラムから出力を取得することです;)

もう 1 つの解決策は、 を使用しProcessBuilderて Java プロセスを起動し、 を介して出力を読み取ることです。InputStream

ここでの問題は、Java 実行可能ファイルを見つけようとすることです。一般に、パス内にある場合は問題ありません。

入力ストリームを読み取る方法の基本的な例としてこれを見ることができます

例で更新

これは、出力を生成する私の「出力」プログラムです...

public class Output {
    public static void main(String[] args) {
        System.out.println("This is a simple test");
        System.out.println("If you can read this");
        System.out.println("Then you are to close");
    }
}

これは、入力を読み取る「リーダー」プログラムです...

public class Input {

    public static void main(String[] args) {

        // SPECIAL NOTE
        // The last parameter is the Java program you want to execute
        // Because my program is wrapped up in a jar, I'm executing the Jar
        // the command line is different for executing plain class files
        ProcessBuilder pb = new ProcessBuilder("java", "-jar", "../Output/dist/Output.jar");
        pb.redirectErrorStream();

        InputStream is = null;
        try {

            Process process = pb.start();
            is = process.getInputStream();

            int value;
            while ((value = is.read()) != -1) {

                char inChar = (char)value;
                System.out.print(inChar);

            }

        } catch (IOException ex) {
            ex.printStackTrace();
        }        
    }
}

詳細については、Basic I/Oをチェックアウトすることもできます

于 2012-10-13T01:45:41.467 に答える