2009-07-27 10 views
10

標準的な方法はありますか?私はこれが多少プラットフォームに依存する可能性があることを認識しています。私たちの製品は現在Windows上でのみサポートされています - だから私はそれが私が今興味を持っていると思います。私が考えることができるのは、レジストリをスキャンするか、ファイルシステムをクロールすることだけです。ファイルシステムをスキャンすると、かなり時間がかかるように思えます。レジストリは信頼できない可能性があります。私は両方をするべきですか?その他の提案はありますか?私は運がないとこれを行うためのAPIを探してみました。私の箱にインストールされているJDK/JREの種類をプログラムで判断してください

答えて

3

まず、JAVA_HOME環境変数(JDK_HOMEのほうがはるかに少ないですが)を探してから、そのバージョンとJDKかJREかを判断します。

その後、代わりに場所を確認します。システムのプログラムファイルディレクトリを見つけてください(99.5%の時間であってもC:\ Program Filesであると仮定しないでください)。その下にある一般的なインストール場所(Javaなど)を探します。

私は網羅的な検索をしません。

このようにJDKを実際に探す必要がありますか? JDKの使いたいことをユーザーに尋ねるだけで、すでに見つけた簡単なものを示唆することはできませんか?

+0

あなたは徹底的な調査をしないだろう、なぜCletusはあなたが守ることができますか?直感的に私はここで同意するが、私は強い理由を探している。 –

+0

徹底的な検索では、ハードドライブにjava.exeまたはjavac.exe(ウィンドウを想定)というファイルがないか検索する必要があります。 –

+0

上記の2つの変数に加えて、C:\ Program Files \と%PATH%環境変数に検索を制限することをお勧めします。 –

1

私はおそらく、インストールされたレジストリキーを探してデフォルトのの場所をクロールします(時間がかかりすぎないようにしてください)。

実行中のJVMなどのさまざまな詳細を出力する小さなJavaアプリケーションをバンドルする方法もあります。

34
System.out.println(System.getProperty("java.version")); 

その他のプロパティhere

+0

それはコードを実行しているJREのバージョンのみを示しています - JDK/JREがインストールされているものではありません – Jonik

+0

申し訳ありませんが、私は疑問を誤解しました。レジストリを使用することができ、何も見つからなかった場合は、ユーザに尋ねます。キーは、HKEY_LOCAL_MASHINE/SOFTWARE/JavaSoft/Java開発キットです。 –

関連する問題