現: 2024-12-02 (月) 09:36:30 yuji ![]() Deleted an attach file: path.png at 2024-12-02 (月) 10:38:37, Deleted an attach file: link.png at 2024-12-02 (月) 10:38:41, Deleted an attach file: javahome.png at 2024-12-02 (月) 10:38:46 |
|||
---|---|---|---|
Line 1: | Line 1: | ||
+ | * WindowsでJava JDKのバージョンを切り替える [#cecc3ef2] | ||
+ | Windowsマシンに複数のバージョンのJava JDK(Java 7やJava 8など)をインストールして,使用するJava JDKを切り替えて使用する方法。~ | ||
+ | WindowsマシンでJavaのバージョンを切り替えて使用する場合,通常は環境変数''JAVA_HOME''を変更する方法で行う。~ | ||
+ | 実行PATHには%JAVA_HOME%\binが設定されているため,この''JAVA_HOME''環境変数を変更することでバージョンを切り替えられることになる。~ | ||
+ | |||
+ | 環境変数を変更するには通常setコマンドを使用するが,このコマンドでは現在実行しているコマンドプロンプトの環境変数しか変更できない。~ | ||
+ | なので他のプロセスなどからはこの環境変数の参照も変更も出来ない。~ | ||
+ | このためsetコマンドで環境変数を変更後,そのコマンドプロンプトを終了すると次にコマンドプロンプトを起動したときにはデフォルト状態に戻ってしまう。~ | ||
+ | |||
+ | setxコマンドを使用すると,システム環境変数を変更することができる。~ | ||
+ | setx <環境変数名> <値> | ||
+ | こうすると,指定されたユーザー環境変数に値がセットされる。(空白などを含む文字列の場合は," "で囲む)~ | ||
+ | |||
+ | システム環境変数を変更したい場合は管理者権限で, | ||
+ | setx <環境変数名> <値> -m | ||
+ | このように,末尾に-mオプションを付けて実行する。 | ||
+ | C:\home\yueno> setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_111" -m | ||
+ | とかすれば,変更できる。 | ||
+ | |||
+ | 一応,これでシステム環境変数のJAVA_HOMEを使いたいJAVAのバージョンに変更すれば使用するJava JDKを切り替えることは出来る。~ | ||
+ | しかし,環境変数が長くなっている場合はうまく変更出来ない場合があったりするし,管理者権限でのコマンドプロンプト実行も意外と面倒ではある。~ | ||
+ | また,コマンドプロンプトを再度起動した後でないと反映されない。~ | ||
+ | |||
+ | そこで環境変数を変える方法ではなく,環境変数で指定するのをシンボリックリンクで実体を変更するようにしています。~ | ||
+ | |||
+ | ** デフォルトで実行するバージョンを設定する [#s886f064] | ||
+ | 現在のWindowsマシンではシンボリックリンクが使用できるので,デフォルトのJava Jdkのシンボリックリンクを作成しておきます。~ | ||
+ | |||
+ | 管理者権限でコマンドプロンプトを起動して, | ||
+ | C:\home\yueno> mklink /D "C:\Program Files\Java\latest" "C:\Program Files\Java\jdk1.7.0_79" | ||
+ | のようにして,"C:\Program Files\Java\latest"にシンボリックリンクを作成します。~ | ||
+ | |||
+ | システム環境変数の''JAVA_HOME''を,作成したシンボリックリンクにします。~ | ||
+ | JAVA_HOME=C:\Program Files\Java\latest | ||
+ | #ref(javahome.png) | ||
+ | |||
+ | システム環境変数のPATHの先頭などに,''%JAVA_HOME%\bin''を追加します。 | ||
+ | Path=%JAVA_HOME%\bin;・・・・・ | ||
+ | #ref(path.png) | ||
+ | また,''C:\Program Files\Common Files\Oracle\Java\javapath''がPATHにあったら削除します。~ | ||
+ | |||
+ | もし,C:\Windows\System32やC:\Windows\SysWOW64のディレクトリに, | ||
+ | java.exe,javaws.exe,javaw.exe | ||
+ | が存在する場合は,これらを削除しておきます。これらのファイルは,Java 7 JREを単独でインストールした時にインストールされるファイル。~ | ||
+ | JREはJDKのJREを使うので削除しても問題ないため削除しておきます。~ | ||
+ | |||
+ | ** 使用するJavaのバージョンをBATファイルで切り替えられるようにする [#f99054cd] | ||
+ | 今回は,Java 7に切り替えるための''java7.bat''と,Java 8に切り替えるための''java8.bat''を作成して,パスが通っているディレクトリに置きます。~ | ||
+ | ''java7.bat''~ | ||
+ | setlocal | ||
+ | @echo off | ||
+ | set java_dir=C:\Program Files\Java\ | ||
+ | set jdk_name=jdk1.7.0_79 | ||
+ | set jdk_path=%java_dir%%jdk_name% | ||
+ | set latest_name=latest | ||
+ | set latest_dir=%java_dir% | ||
+ | set latest_path=%latest_dir%%latest_name% | ||
+ | cd %java_dir% | ||
+ | IF EXIST "%latest_path%" (rmdir "%latest_path%") else echo "do not found symlink." | ||
+ | mklink /D "%latest_path%" "%jdk_path%" | ||
+ | echo %jdk_name%に切り替えました。 | ||
+ | endlocal | ||
+ | |||
+ | ''java8.bat''~ | ||
+ | setlocal | ||
+ | @echo off | ||
+ | set java_dir=C:\Program Files\Java\ | ||
+ | set jdk_name=jdk1.8.0_211 | ||
+ | set jdk_path=%java_dir%%jdk_name% | ||
+ | set latest_name=latest | ||
+ | set latest_dir=%java_dir% | ||
+ | set latest_path=%latest_dir%%latest_name% | ||
+ | cd %java_dir% | ||
+ | IF EXIST "%latest_path%" (rmdir "%latest_path%") else echo "do not found symlink." | ||
+ | mklink /D "%latest_path%" "%jdk_path%" | ||
+ | echo %jdk_name%に切り替えました。 | ||
+ | endlocal | ||
+ | |||
+ | jdk_nameしか違わないので,引数で切り替えてもいいと思う。~ | ||
+ | シンボリックリンクを書き換えるので,管理者権限でのコマンドプロンプトからBATファイルを実行する必要があります。~ | ||
+ | しかし,これもちょっと面倒です。~ | ||
+ | |||
+ | そこで,このBATファイルのショートカットを同じディレクトリに作成し,プロパティの詳細設定で''管理者で実行''をマークしておきます。~ | ||
+ | これはBATファイル直接では''管理者で実行''が出来ないためです。 | ||
+ | #ref(link.png,,60%) | ||
+ | |||
+ | それから,システム環境変数のPATHEXTに''.LNK''を先頭に追加します。 | ||
+ | PATHEXT=.LNK;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC | ||
+ | |||
+ | このようにすると''管理者で起動していないコマンドプロンプト''で,java7と打てばjava7.lnkがjava7.batよりも先に検索され,管理者権限のコマンドプロンプトでBATファイルが実行されます。UACの通知設定によって,この時確認ダイアログが表示されます。~ | ||
+ | もちろんショートカットをダブルクリックして直接実行もできます。 | ||
+ | |||
+ | これで,Javaのバージョンを簡単に切り替えられるようになりました。~ | ||
+ | 実際の切り替え方:コマンドプロンプト(管理者で実行しなくても良い)で以下のようにする。~ | ||
+ | C:\home\yueno> java7 | ||
+ | C:\home\yueno> java -version | ||
+ | java version "1.7.0_79" | ||
+ | Java(TM) SE Runtime Environment (build 1.7.0_79-b15) | ||
+ | Java HotSpot(TM) Client VM (build 24.79-b02, mixed mode, sharing) | ||
+ | とか, | ||
+ | C:\home\yueno> java8 | ||
+ | C:\home\yueno> java -version | ||
+ | java version "1.8.0_211" | ||
+ | Java(TM) SE Runtime Environment (build 1.8.0_211-b12) | ||
+ | Java HotSpot(TM) Client VM (build 25.211-b12, mixed mode) | ||
+ | すると,うまくJava JDKが切り替えられるようになった。~ |