0

以下を使用して、別の Java アプリから Java アプリケーションを起動します。

    ProcessBuilder pb = new ProcessBuilder(javaPath + javaCommand, maxMemStr,
            minMemStr, stackSizeStr, jarCommand, jarfile, jarArg);
    try {
        Process p = pb.start();
    } catch (IOException ex) {
        Logger.getLogger(launch.class.getName()).log(Level.SEVERE, null, ex);
    }

ここで、javaCommand は java または javaw のいずれかです (ユーザーが代替パスを指定しない限り、ほとんどの場合、javaPath は空です)。問題は、アプリの起動後、プロセス リストに Java が含まれていることを確認しても、コンソールが表示されないことです。

PrcoessBuilder がコマンド シェルを呼び出さないためでしょうか。プログラムでコンソールを表示する方法はありますか?

前もって感謝します。

4

3 に答える 3

1

次のようなコマンドを実行することをお勧めします:cmd / Kjava...またはcmd/C java .. ..

于 2013-01-22T19:30:03.917 に答える
1

これは、「コマンド コンソール」自体が、別のプロセスの std-in/-out/-err ストリームに接続して画面に表示するプロセスであるためです。Java を単独で起動すると、他のプロセスはそれらのストリームを処理しないため、コマンド コンソールが不足します。必要な結果を得るには、コマンド コンソールの新しいインスタンスを起動し、その後カスタム Java コマンドを実行する必要があります。

これを行うためのより良い方法があるかもしれません...しかし、これに対する解決策はプラットフォームに依存すると思います. Windows では、次のようなことができます。

ProcessBuilder pb = new ProcessBuilder("start", "\"JAwesomeSauce\"", "cmd.exe",
    "/k", javaPath + javaCommand, maxMemStr, minMemStr, stackSizeStr, jarCommand,
    jarfile, jarArg);
try {
    Process p = pb.start();
} catch (IOException ex) {
    Logger.getLogger(launch.class.getName()).log(Level.SEVERE, null, ex);
}

使用しているOSがLinux/Macである場合、Linux/Macでも同様のことができると思います。

于 2013-01-22T19:28:17.607 に答える
1

私が覚えている限りでは、特定のプロセスProcessbuilderが開かれています。pipe

あなたcommand window はあなたが見るすべてのプロセスそのものです。コマンドを入力すると、cmd/bash通常は新しいプロセスが作成され、それらに接続されます。

于 2013-01-22T19:33:03.113 に答える