2009-05-01 7 views
0

申し訳ありません私の初心者の質問:P Windowsシステム上のcmdでプロンプトを "java -version"にすると、が保証されますシステムは.jarファイルを実行するにはエラーが発生しない場合はシステムがjre(windows)を持っているかどうかを確認する簡単な防弾技術

+0

"java.exe"だけでなく "java.exe"を使用して動作する場合は、JVMがインストールされていると想定できます。しかし、そうでなければ、そこにないことを意味するわけではなく、そのjava.exeだけがパスにありません。 –

答えて

2

JREをチェックする唯一の保証された方法は、小さなJavaプログラムを実行することです。

多分、システムにJava標準ライブラリの一部しかインストールされていない可能性があります。この場合、小さなテストJARはうまく動作するかもしれませんが、完全なプログラムではないかもしれません。しかし、なぜ誰かがシステムをそのように設定することに苦労するのは想像もできませんが。

+0

これは合理的な技術のように聞こえます。 –

+0

ありがとう:)それは動作します! – Johannes

1

まあ、明らかにそうではありません。 C:\ Windows \ System32のように、PATHにjava.bat anywhareという空のファイルを置くことができます。 「java」を呼び出すとエラーは発生しませんが、JREがインストールされているわけではありません。

+0

ありがとうございます。私は見続ける必要があります:)あなたは、任意のコードやコマンドプロンプトからjreがインストールされているかどうかを確認する方法はありますか? – Johannes

+1

Davidが言ったように、唯一の「防弾」方法は、小さなJavaプログラムを実行することです。また、 "java -version"の出力を解析することもできます。それは100%の馬鹿ではありませんが、十分に良いと思います。 –

0

Windowsマシンをチェックして、JNLPのハンドラをレジストリでチェックして、比較的最近のJREの存在を保証する必要があるのであれば、実際にお勧めします。

1

小規模なクラスファイルを実行して、ファイルに値を書き込み、そのファイルをチェックするのはなぜですか?失敗した場合は動作しません。

良い値は、java.versionシステムプロパティの値である可能性があります。

1

Windowsでは、HKLM¥SOFTWARE¥JavaSoft¥Java Plug-inでレジストリを確認できます。そこから、各サブキーはインストールされたJREです。ここで

編集は、エラーが返されます「Javaの--version」を呼び出すことができる必要があり、コマンドラインからインストールJREの

public string[] GetInstalledJavas() { 
     // hold the registry subkeys that list the installed JRE's 
     string[] jres = null; 
     try { 
      RegistryKey myKey = Registry.LocalMachine; 
      myKey = myKey.OpenSubKey(@"SOFTWARE\JavaSoft\Java Plug-in"); // read-only 
      jres = myKey.GetSubKeyNames(); 
     } catch (Exception myException) { 
      Console.Writeline(myException.ToString()); 
     } 
     return jres; 
} 
2

で文字列の配列を返しますC#のコードですjavaがインストールされていないか、現在インストールされているバージョン情報。

関連する問題