それが問題です: Java アプリケーションが実行されているので、それを実行している Java バイナリへのパス/名前を取得する方法は? たとえば、Windows では「C:\Program Files\Java\jre6\bin\java.exe」、Linux では「/usr/bin/java」です。できれば JDK のみに依存する、プラットフォームに依存しないソリューションが必要です。
質問の文脈は以下です。FirstApplication と SecondApplication の 2 つの Java アプリケーションを開発しています。FirstApplication は、 ProcessBuilder APIを使用して SecondApplication を開始します。問題は、SecondApplication を開始するために Java バイナリへのパスを指定する必要があることです。例えば、
String cmd = "C:\Program Files\Java\jre6\bin\java.exe -cp <second application classpath> com.secondapplication.MainClass";
Process p = new ProcessBuilder(cmd).start();
これに対する可能な代替ソリューションは、PATH システム変数を介して利用可能な Java バイナリがあると仮定するか、JAVA_HOME システム変数が設定されていると仮定することです。しかし、常にそうであるとは限りません。また、アプリケーションの最終ユーザー (最終ユーザーだけでなく、他の Java 開発者も対象) は、自分のシステムに複数の JVM をインストールし、必要な JVM を明示する FirstApplication を実行する場合があります。理想的には、SecondAplication は、そのようなシステム変数に依存せずに、FirstApplication とまったく同じ Java バイナリを使用して実行する必要があります。
ありがとうございました