Make JRE / JDK detection on Windows work
authorrjung <rjung@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 20 Jun 2011 09:50:17 +0000 (09:50 +0000)
committerrjung <rjung@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 20 Jun 2011 09:50:17 +0000 (09:50 +0000)
the same way as on Unix:
- if "debug" is demanded, only use JAVA_HOME
  and check for a JDK there
- without "debug", either use JRE_HOME
  or JAVA_HOME with precedence on JRE_HOME

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1137565 13f79535-47bb-0310-9956-ffa450edef68

bin/setclasspath.bat

index a38ae72..6e2a8b9 100755 (executable)
@@ -23,35 +23,50 @@ rem $Id$
 rem ---------------------------------------------------------------------------
 
 rem Make sure prerequisite environment variables are set
-if not "%JAVA_HOME%" == "" goto gotJdkHome
+
+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
 
-:gotJreHome
-if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome
-if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome
-if not ""%1"" == ""debug"" goto okJavaHome
-echo JAVA_HOME should point to a JDK in order to run in debug mode.
-goto exit
-
-:gotJdkHome
+: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
-if not "%JRE_HOME%" == "" goto okJavaHome
 set "JRE_HOME=%JAVA_HOME%"
-goto okJavaHome
+goto okJava
 
 :noJavaHome
-echo The JAVA_HOME environment variable is not defined correctly
+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
-echo NB: JAVA_HOME should point to a JDK not a JRE
 goto exit
-:okJavaHome
 
+:okJava
 if not "%BASEDIR%" == "" goto gotBasedir
 echo The BASEDIR environment variable is not defined
 echo This environment variable is needed to run this program