- ベストアンサー
複数バージョンのJREの共存について
- Windows Server 2008 R2のサーバ上でアプリごとに異なるバージョンのJREを使用する方法や対処方法について教えてください。
- 複数のJREバージョンを1台のサーバにインストールすることは推奨されない行為であるか、またサポート対象外の構成なのか教えてください。
- JREのバージョンが異なる複数のアプリが同じサーバ上で動作する場合、どのように対処するのが一般的なのか教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Windows OSは複数のJREをインストールしても問題ありません。 インストール先を適切に設定(※)し、自動アップデートを行わない設定にしておきましょう。 > OSの仕様としては、複数バージョンのJREがインストールされている場合は > 新しい方のバージョンを標準で使用する、と認識しております。 JREはSystem32フォルダ(64ビットWindowsに32ビットJavaを入れた場合はSysWow64フォルダ)にもjava.exeやjavaw.exeを置きますが、インストールした奴の中で最新のJREのものが置かれるようになっています。なのでコマンドを指定して実行などでjavaと入力すると最新のJREが起動します。おそらくそれの事を言っているのだと思いますが、PATH環境変数で先に各JREのbinを指定したり、各JREのbin\javaw.exeを直接起動する事で任意のJREを実行する事ができます。 ※たとえば C:\Program Files\Java\jre1.6.0_24 と C:\Program Files\Java\jre1.6.0_45 他の例を挙げると、EclipseやOracle SQL Developerなどは自分自身のインストール先配下に自分を動かすためのJREをインストールするものもあります。 複数のソフトウェアの推奨JREですが、これはソフトウェアをリリースした時の最新のアップデート番号が書かれているだけだと思います。Java6の場合はアップデートでAPIが変更された事はないので基本的には(Java6の中で)最新のアップデートを使う方が推奨されます。が、アップデートというのは当然バグフィックスを含みますので、JRE1.6.0_24のコアパッケージの中に存在するバグを回避するようなコードがそのソフトウェアに含まれており、かつJRE1.6.0_45ではそのバグが修正されていて動作が変わっているという可能性は十分にあります。心配であれば複数のJREで動作させる方が良いでしょう。 前述したPATH環境変数などを用いて、バッチファイルを書いたり、(サービス起動するようなソフトウェアは)サービスを実行するアカウントを切り替えたりする事で、JREの指定方法が無いソフトウェアでも任意のJREでソフトウェアを実行する事もできます。
お礼
詳しくご回答頂きありがとうございました。 記載いただいているPATH環境変数での指定についても検討しておりましたが、 おそらく先に書かれている方が使用されるため、切り替えて使用することは可能ですが 同時に別のバージョンを動作させるのは難しいのだろうと認識しております。 ですが、アプリの仕様上、直接java.exeを起動するような作りになっていれば 明示的に古いほうのバージョンで動作させることも可能、という旨で理解しました。 調べてみたところ、JRE1.6.0_45ではOracle社のRuntime.exec APIの実装が変更されており、 対象アプリの動作が正常に動作しないため、複数バージョンを共存させる方針で進めようと思います。