Hatena::ブログ(Diary)

思い立ったら書く日記

2010-01-16

JRE 1.6.0_u10 でのインストールパスの変更

| 15:37 | JRE 1.6.0_u10 でのインストールパスの変更を含むブックマーク

2010年1月9日の日記id:toby さんからトラックバックをいただきました。そのトラックバック先にて興味深い話題がありました。JRE 1.6.0_u10 から JRE のインストールパスが変更になり、古いバージョンが上書きされる模様です。この変更点を知らなかったので、確認してみました。

結論

JRE 1.6.0_u10 以降で初期設定のままインストールして最新版にアップデートすると、古いバージョンの JRE は残りませんでした

JRE 1.6.0_u10 以前をインストールし、アップデートしている場合、一度アンインストールして最新バージョンを再インストールするのがよいと思います。再インストールする際には、すべてのバージョンの JRE をアンインストールすること。ただし、バージョン依存の Java アプリケーションを使用する場合、そのアプリケーションの動作に影響が出るかもです。

リリースノートの確認

toby 様のところからリンクしている、JRE 1.6.0_u11 のリリースノートに以下の記述がありました*1。おぉー、確かにインストールパスが変更されているようです。この記述を読んで、「JRE 1.6.0_u10 以前をインストールしてアップデートしている場合、どうなるの?」と疑問に思いました。この疑問を解消するため、JRE 1.6.0_u07、JRE_1.6.0_u10 それぞれをインストールして、最新版にアップデートしてみて、古いバージョンの JRE が残るのか確認してみます。

Windows の Runtime Environment のインストール (patch-in-place と static)

JDK 6u10 では patch-in-place インストールがデフォルトとなり、JRE が jre6 という名前のディレクトリにインストールされます。以前は、jre1.6.0_10 という名前のディレクトリにインストールされていました。つまり、更新版ではデフォルトで jre6 ディレクトリがパッチ処理されます。

インストーラのインタフェースを使えば、JRE (たとえば 6u10、6u11 のいずれか) を静的にインストールするように選択できます。

http://java.sun.com/javase/ja/6/webnotes/6u11.html

JRE 1.6.0_u07、JRE 1.6.0_u10 からのアップデート

JRE 1.6.0_u07 の場合

JRE 1.6.0_u07 をインストールすると、初期設定のままだと「C:\Program Files\Java\jre1.6.0_07」にインストールされます(下記画像の左側)。この状態からコントロールパネルの「Java」を起動し、「アップデート」タブから [今すぐアップデート] を実行しました。最新版 JRE 1.6.0_u17 は、初期設定のままだと「C:\Program Files\Java\jre6」にインストールされ、JRE 1.6.0_u07 が残ったままとなります(下記画像の右側)。ただし、以後のバージョンは jre6 フォルダを更新していくと考えると、JRE 1.6.0_u10 以降の JRE は残らないでしょう。

f:id:kaito834:20100116145035p:image:w300:h205

このアップデート後にバージョン指定で java を実行してみると、指定したバージョンの java を実行できました。ただし、おそらく指定できるのは、インストールされている古いバージョンの Java のみだと思います。

C:\>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)

C:\>java -version:"1.6.0_07" -version
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)

JRE 1.6.0_u10 の場合

JRE 1.6.0_u10 をインストールすると、初期設定のままだと「C:\Program Files\Java\jre6」にインストールされます(下記画像の左側)。この状態からアップデートを実行しました。最新版 JRE 1.6.0_u17 は、「C:\Program Files\Java\jre6」にインストールされ、JRE 1.6.0_u10 は残りませんでした(下記画像の右側)。

f:id:kaito834:20100116145036p:image:w300:h205

このアップデート後にバージョン指定で java を実行してみても、指定したバージョンの java を実行できませんでした。

C:\>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)

C:\>java -version:"1.6.0_07" -version
Unable to locate JRE meeting specification "1.6.0_07"

ちなみに一応 JRE 1.6.0_u11 から JRE 1.6.0_u16 まで同じように確認してみましたが、JRE 1.6.0_u10 と同じインストールパスとなりました。

参考情報 [2010年1月17日 追記]

*1JRE 1.6.0_u10 のリリースノートには、この記載がない。不思議。

通りすがり通りすがり 2010/01/16 17:40 ただし、古いバージョンのインストーラは %AppData%\Sun\Java 配下に放置していきますね。
こいつらは手動削除しない限り溜まり続けることも書いておいた方がいいと思います。

かいとかいと 2010/01/17 12:59 >通りすがりさん
コメントありがとうございます。

確かに JRE 1.6.0_u07 のインストーラが残っていましたね。
インストーラが残っていても悪用されることはないと思いますが、
無駄なディスク圧迫になりそうですね。参考情報として書こうと
思います。

tobytoby 2010/01/17 18:21 どもー。idコールとトラックバックで来ましたー。
検証ご苦労様です!
JRE 1.6.0_u10以降だと大丈夫というのがアレですね。昔のも削除してくれればいいのに…。
うちのPC環境は1年以上から使っている環境でしたが、古いのが残っていなかったということは、最初に入れたのがu10以降だったのかもしれませんね…。

kaito834kaito834 2010/01/17 19:52 >tobyさん

コメントありがとうございます。

この日記を書くにあたり、改めてうちの環境も確認してみたら、古いバージョンが残っていました(x 古いバージョンをインストールして、以後アップデートし続けてる人は多そうですねー。

ef3ef3 2010/01/19 14:31 JavaRa
http://sourceforge.jp/projects/sfnet_javara/
を使うと、古いバージョンを片付けることができます。

kaito834kaito834 2010/01/21 23:41 >ef3さん

これは知りませんでした>JavaRa。

早速使ってみました。このツールは、古いバージョンの
JRE をまとめてアンインストールするんじゃなくて、
強引にファイル・レジストリを削除するんですね。