Javaでプログラミングをしていると、複数のJDKバージョンを扱うことが必要になることがあります。そこで、アップデートの度に古いバージョンをアンインストールせずに新しいバージョンを入れていくとこんな感じになります。
インストール先のディレクトリは次のようになります。
C:\Program Files\Java>dir jdk* 2013/05/25 22:32 <DIR> jdk1.6.0_45 2015/04/15 23:28 <DIR> jdk1.7.0_65 2014/10/15 23:30 <DIR> jdk1.7.0_72 2015/01/25 12:02 <DIR> jdk1.7.0_76 2015/04/21 08:31 <DIR> jdk1.7.0_80 2014/07/28 23:04 <DIR> jdk1.8.0_11 2015/01/25 13:47 <DIR> jdk1.8.0_31 2015/03/05 01:07 <DIR> jdk1.8.0_40 2015/04/21 08:47 <DIR> jdk1.8.0_45 2015/08/01 18:49 <DIR> jdk1.8.0_51
Windows OSの場合、環境変数JAVA_HOMEにJDKをインストールしたディレクトリを設定し、さらに環境変数PATHにJDKインストールディレクトリ下のbinを設定します。しかし、NetBeans IDEなどはJAVA_HOMEやPATHにあるJavaではなく、独自の設定ファイル(netbeans.conf)に書かれたパスのJavaを使用します。なので、使用するJavaのバージョンを切り替えるのが結構手間になります。
UNIX系OSでは、このようなときはシンボリックリンクを使って切り替えます。Windows OSでもNTFSではシンボリックリンクを実現する機能*1が備わっており、Windows Vistaから標準でmklinkコマンドが提供されるようになったので、シンボリックリンク(ジャンクション)で切り替えを行うことができます。
管理者権限でコマンドプロンプトを起動します。
C:\>cd "Program Files\Java" C:\Program Files\Java>mklink /D jdk1.8.0 jdk1.8.0_51 jdk1.8.0 <<===>> jdk1.8.0_51 のシンボリック リンクが作成されました C:\Program Files\Java>dir jdk* : 2015/08/01 22:33 <SYMLINKD> jdk1.8.0 [jdk1.8.0_51] 2014/07/28 23:04 <DIR> jdk1.8.0_11 2015/01/25 13:47 <DIR> jdk1.8.0_31 2015/03/05 01:07 <DIR> jdk1.8.0_40 2015/04/21 08:47 <DIR> jdk1.8.0_45 2015/08/01 18:49 <DIR> jdk1.8.0_51
環境変数JAVA_HOMEや環境変数PATHの設定、各種ツールのJava SEへのパス設定は、ここで作成したシンボリックリンク C:\Program Files\Java\jdk1.8.0 を使用します。
これであれば、シンボリックリンクを変更するだけで使用するJava SEバージョンが変更できます。
また、パスに空白が含まれることで正しく動作できないツールがあった場合にも、例えばC:\java をC:\Program Files\Javaのシンボリックリンクとして作成しておくことで、対応することが可能になります。
C:\>mklink /d java "Program Files\Java" java <<===>> Program Files\Java のシンボリック リンクが作成されました C:\>dir : 2015/08/01 22:34 <SYMLINKD> java[Program Files\Java]
例えば、JAVA_HOME、PATHには次を設定します。
JAVA_HOME=C:\java\jdk1.8.0
PATH=C:\java\jdk1.8.0\bin;%PATH%
あとはシンボリックリンクの変更で使用するJavaのバージョンを変更します。
C:\Program Files\Java>rmdir jdk1.8.0 C:\Program Files\Java>mklink /d jdk1.8.0 jdk1.8.0_60
*1:リパース・ポイント