アプリケーション内から別のJavaアプリケーションを実行する方法が必要です。その出力をJTextAreaに受け取り、JTextBoxを介して入力を送信したいと思います。
質問する
2680 次
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 に答える