TomCat 启动找不到配置的环境变量
错误描述
通过tomcat/bin/startup.bat启动tomcat时遇到报错
The JRE_HOME environment variable is not defined correctly
This environment variable is needed to run this program
终端界面一闪而过,发现启动失败,这是由于tomcat在环境变量中检索Java环境是出现错误
追根溯源
打开bat文件查看,其中没有关于JRE_HOME的报错信息,发现又运行了catalina.bat
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
既没有关于catalina环境配置的报错,又执行了catalina.bat,那么我们就查看一下是不是在catalina.bat中抛出的JRE环境变量报错
阅读bat代码,发现第一个有关Java环境的代码块
rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
echo This file is needed to run this program
goto end
:okSetclasspath
call "%CATALINA_HOME%\bin\setclasspath.bat" %1
if errorlevel 1 goto end
这里尝试从setclasspath.bat中获取Java environment,正符合我们的猜想,继续查看setclasspath.bat
阅读bat,发现我们触发的报错代码
: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
回溯调用源
: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
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
通过代码我们知道,如果我们不在"debug"模式下,就会继续检索JRE或JDK任意一个来支持我们在非调试模式下的运行,很明显,我们在查找JRE_HOME时就出现了问题,从而引发报错,接下来尝试解决这个问题
问题解决
1.添加JRE_HOME环境变量
- win+R 输入sysdm.cpl打开系统属性->高级->环境变量
- 在系统变量中新建JRE_HOME 值为jre路径
到这里,如果问题解决了,恭喜你,但是很多人和我一样配置完毕后运行还是报错,请参考方法2
2.直接在脚本中增加静态变量
既然最终会在setclasspath.bat中查找环境变量,那么我们就直接在这里指明环境变量位置,而不必让其从系统配置中逐步检索了
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
set JAVA_HOME=D:\Java_8
set JRE_HOME=D:\Java_8\jre
直接在脚本开头写好HOME参数,注意将路径改为自己的
再次运行,成功
成功检索到jre
tomcat启动

0 评论