1

複数の JVM がインストールされている開発者のマシンで実行される Java アプリケーションがあります。このアプリケーションは子 Java アプリケーションを呼び出し、(子アプリケーションによっては) 使用可能なすべての JVM から適切な JVM を選択する必要があります。

子アプリケーションの JVM は、必ずしも親アプリケーションで使用されている JVM であるとは限りません。たとえば、ユーザーは OpenJDK 1.7.0 を使用して親アプリケーションを起動したものの、レガシー ツールを子プロセスとして起動したい場合があり、そのツールは Sun API を必要とするため、Sun JDK である必要があります。

ローカル マシンで JVM を検索し、情報をクエリするための API を提供して、子プロセスを実行するときに適切な JVM を選択できるようにするライブラリはありますか?

私ができることを望んでいるのは、次のようなものです。

public Jvm chooseAvailableJvmForDevTool() {
  for (Jvm jvm : SomeLibrary.pollJvms()) {
    if (jvm.getVersion().getMinor() == 6 && jvm.isHotspot() && jvm.isJDK()) {
      return jvm;
    }
  }
  throw new UnsupportedOperationException("This tool requires a Sun Hotspot 1.6 JDK");
}

そのようなライブラリがすべての JVM を見つけるとは思っていませんが、明らかな場所でそれらのいくつかを見つけようとすることができればよいでしょう。たとえば、Windows マシンでは、少なくとも C:\Program Files\Java が検索され、Linux マシンでは /usr/lib/jvm が検索されることを願っています。私の会社の開発者が JDK をインストールするのを好む可能性が高い場所をライブラリに与えることができれば、なおさらです。(たとえば、一部の Windows 開発者は、"Program Files" のスペースを適切にエスケープしないツールを使用する場合に備えて、"C:\Program Files\Java" 以外の場所に Java を防御的にインストールします。)

この質問は、この 2 年前の質問とほとんど同じです... How to programatically get all Java JVM installed (not default one) using Java?

...しかし、暫定的な 2 年間で、誰かがこれを行うためにオープンソース ライブラリを作成し、私たち全員が改善の恩恵を受けることができるようになることを期待して (再) 質問しています。そのようなプロジェクトを知っている人はいますか?(または、そのようなライブラリが非常に悪いアイデアである理由を説得力のある議論を提供できますか?)

4

0 に答える 0