JAVA_HOMEって誰が使うの
だいぶ前に環境変数に追加して、なんのために追加したかももはや覚えてなかったので改めて調べてみた。
Tomcatのもの
こいつを参照している代表格がTomcatである。Tomcatのbin配下のsetclasspath.batに以下のような記述があるよ。
rem --------------------------------------------------------------------------- rem Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings rem are valid and consistent with the selected start-up options and set up the rem endorsed directory. rem --------------------------------------------------------------------------- rem Make sure prerequisite environment variables are set rem In debug mode we need a real JDK (JAVA_HOME) if ""%1"" == ""debug"" goto needJavaHome rem Otherwise either JRE or JDK are fine if not "%JRE_HOME%" == "" goto gotJreHome if not "%JAVA_HOME%" == "" goto gotJavaHome echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined echo At least one of these environment variable is needed to run this program goto exit :needJavaHome rem Check if we have a usable JDK if "%JAVA_HOME%" == "" goto noJavaHome if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome set "JRE_HOME=%JAVA_HOME%" goto okJava :noJavaHome echo The JAVA_HOME environment variable is not defined correctly. echo It is needed to run this program in debug mode. echo NB: JAVA_HOME should point to a JDK not a JRE. goto exit :gotJavaHome rem No JRE given, use JAVA_HOME as JRE_HOME set "JRE_HOME=%JAVA_HOME%" :gotJreHome rem Check if we have a usable JRE if not exist "%JRE_HOME%\bin\java.exe" goto noJreHome if not exist "%JRE_HOME%\bin\javaw.exe" goto noJreHome goto okJava :noJreHome rem Needed at least a JRE echo The JRE_HOME environment variable is not defined correctly echo This environment variable is needed to run this program goto exit :okJava rem Don't override the endorsed dir if the user has set it previously if not "%JAVA_ENDORSED_DIRS%" == "" goto gotEndorseddir rem Set the default -Djava.endorsed.dirs argument set "JAVA_ENDORSED_DIRS=%CATALINA_HOME%\endorsed" :gotEndorseddir rem Set standard command for invoking Java. rem Note that NT requires a window name argument when using start. rem Also note the quoting as JAVA_HOME may contain spaces. set _RUNJAVA="%JRE_HOME%\bin\java" set _RUNJDB="%JAVA_HOME%\bin\jdb" goto end :exit exit /b 1 :end exit /b 0
このようにTomcatはベタでJAVA_HOME
を参照することにしている模様。TomcatのためにJAVA_HOMEをちゃんと設定してあげよう。
Tomcatのためだけじゃない
Tomcatに合わせて定義したJAVA_HOMEであるが、Tomcatのためだけに使われているわけではない。例えばわたしの環境では、以下のように環境変数Pathに溶け込んでいた。い、いつの間に!
これはRapid Environment Editorという神ツールで環境変数見た画面である。
こうしておくと、Tomcatが見るJDKと、PC上デフォルトで使用するJDKのバージョンを合わせることができる。逆に言うと合ってしまう。要注意な。
Tomcat以外にもJAVA_HOME
を見ている何かしらがあるそうなので、JAVA_HOMEを見てそうなやつがいたら注意深く観察する必要がある。場合もある。例えばAndroidSDKのインストーラがJAVA_HOMEを見ているようです。
参考:Android SDK のインストールエラー JAVAが見つからないエラー対処法はJAVA_HOMEの設定: 一番わかりやすいAndroidアプリ開発入門