2009-05-24 7 views

答えて

1

java -versionをサブプロセス(パイプでそのプロセスの出力を読み取る)で実行し、結果があれば解析することができます。または、あなたはWindowsのレジストリを混乱させる可能性があります(これはさらに複雑に感じられますが、よりクラージーかもしれません)。

+0

SOFTWARE \ JavaSoft \ Javaランタイム環境\ BrowserJavaVersionでバージョン情報を見つけて解析できました ありがとうございました –

+0

C++プログラム内の "launch Java DLL"は実現可能でしょうか?デフォルトのJVMがマシン上にあるかどうかを確認する必要があります。 –

+0

ブラウザのバージョンを実際のシステムのバージョンにすることはできませんでした...代わりに@ emg-2の答えを使用することをお勧めします。 –

3

フォーク次のコマンドを実行するプロセス:java -version。出力を収集し、解析します。次のようになります。

java version "1.5.0_16" 
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284) 
Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing) 

これはstderrに書き込まれます。 stderr出力を収集して解析する必要があります。

+0

プラットフォーム上のシェルの助けが必要かもしれないと付け加えます。そうしないと、現在のディレクトリに「java」バイナリがないため、「java」を実行すると何も起こりません。 * nixでは、 "sh -c 'java -version'"のようなものを実行して、実際にパスからjavaを実行するようにします。私はWindows上で同等のことがわかりません。 –

+1

@Sean Owen:Windowsは通常、シェルの助けを借りずにプロセスのPATH環境変数を自動的に探します。 –

+0

その出力をどのように収集しますか?私は、STDOUTをテキストファイルにリダイレクトし、次にテキストファイルを解析することによってこれを試みました。ただし、データがファイルの代わりに画面に表示されるため、STDOUTを使用しているようではありません。 –

1

マシンに複数のJREを同時にインストールすることも可能です。インストールプログラムが複数のJREを検出した場合、そのうちの1つ(例えば、最新のもの)があなたのアプリで使用されるものであると仮定するのではなく、ユーザーに選択肢を提供する必要があります。

2

私はレジストリを使用することを提案しています。あなたはウィンドウをプログラミングしていますので、ウィンドウで実行してください。登録簿の不安は不合理である。バージョン

レジストリキー:レジストリから値がhereを見つけることができます取得する方法

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion 

情報。

他のJava関連のレジストリキーについては、hereを参照してください。

関連する問題