1

目標: クライアントとサーバーが異なる jvm で実行されるクライアント サーバー プログラムがあります。同じことをテストするには、プログラムで別の JVM でサーバーを呼び出し、現在の jvm を使用してクライアントを実行し、さまざまな C/S テストを実行します。

プログラムでメソッドを実行したり、別の jvm で Java コマンドを実行したりする方法はありますか?

4

4 に答える 4

4

1) Java でプロセスを実行するための最も強力なツールはProcessBuilderです。

ProcessBuilder pb = new ProcessBuilder("java", "-server", "-jar", "yourJar.jar");

Process p = pb.start();

Processを使用するよりも、 read InputStreamdestroyなどの子プロセスを操作できます


2) 両方のソース コードを編集できる場合は、この質問を確認して、同じホスト上の JVM 間の効率的な通信を構築してください。コードを変更できない場合は、同じ JVM スペースにあるため、サーバーをロードし、JVM 間通信を実装して必要なメソッドを呼び出す独自のローダーを作成するだけです。

于 2013-02-05T09:49:12.443 に答える
1

を使用して手動で実行する、事実上すべてのコマンドを実行できます。

             Runtime.getRuntime().exec(command);

詳細については、Runtime.getRuntime().exec(...) のドキュメントを参照してください。

ただし、exec を使用してプラットフォーム固有のコマンドを実行すると、プログラムのプラットフォームに依存しない性質が失われることにも注意してください。

以前、「mv」を使ってファイルを移動している人を見たことがあります。これにより、プログラム全体が Unix ベースの OS 固有のものになりました。Java または任意の仮想マシン ベースの言語の魅力は、そのプラットフォームに依存しない性質です。

于 2013-02-05T09:51:10.543 に答える
0

コマンドラインを使用できます。

 Runtime.getRuntime().exec("java -server MyServer")

または、より複雑な呼び出しを作成する場合は、http://commons.apache.org/exec/を使用してプログラムを作成して実行します。

于 2013-02-05T09:44:06.940 に答える
0

私の知る限り、これはプレーンJavaでは不可能です。おそらくグリッド対応のフレームワークは、複数のJVMでJavaプログラムを実行する方法を提供する可能性があります。同様の問題がここで解決されました:

how-to-run-a-java-file-project-in-remote-jvm-which-is-present-in-other-network

于 2013-02-05T09:45:50.930 に答える