很多人遇到运行startup.bat后,一个窗口一闪而过的问题,可以通过查看日志(logs文件)来查找原因。主要有以下两个方面的原因:
1.环境变量的配置
tomcat在启动时,会读取环境变量的信息,需要一个CATALINA_HOME与JAVA_HOME的信息,CATALINA_HOME即tomcat的主目录,JAVA_HOME即java安装的主目录,jdk的主目录。
首先,要在环境变量处,配置JAVA_HOME,注意变量值是jdk的主目录,不是bin目录,并且不要加分号,如图:
然后,如果这样配置,startup.bat还是一闪而过,可以右键点击startup.bat,编辑,在文本的最后敲上pause,保存后重新运行startup.bat,这时候窗口不会再一闪而过,而是停留在桌面上(调试成功,把pause去掉即可)。
如果有错误信息,这时候会显示出来,可以再根据它的错误提示,上网搜索对应的解决办法(说明:在后面“附”提供在错误提示窗口遇到过的问题)。如果没有错误信息,则很可能是第二种情况。
2.端口被占用
就是另一个程序已经在运行,占用了端口,我就遇到过这种情况,原因是我之前在bin目录下双击运行了bootstrap.jar,但好像没反应,其实它已经在运行了,启动任务管理器就可以知道。如下图:
只需把javaw.exe进程关闭后再启动tomcat就可以了,此时就不会出现一闪而过了。
附:
下面是在错误提示窗口遇到过的问题:
( 1 ) Neither the JAVA_HOME nor the JRE_HOMEenvironment variable is definedTomcat 的 startup.bat ,它调用了 catalina.bat, 而 catalina.bat 则调用了 setclasspath.bat ,只要在 setclasspath.bat 的开头声明环境变量(红色两行)就可以了,原因是后来较新版本安装完不会自动登记环境变量 JAVA_HOME , JRE_HOME 。
给 setclasspath.bat 的开头添加红色标记部分,如下:
rem---------------------------------------------------------------------------
rem Set CLASSPATH andJava options
rem
rem $Id:setclasspath.bat 505241 2007-02-09 10:22:58Z jfclere $
rem---------------------------------------------------------------------------
setJAVA_HOME=C:\Program Files\Java\jdk1.7.0_45
set JRE_HOME=C:\Program Files\Java\jre7
rem Make sureprerequisite environment variables are set
if not"%JAVA_HOME%" == "" goto gotJdkHome
if not"%JRE_HOME%" == "" goto gotJreHome
echo Neither theJAVA_HOME nor the JRE_HOME environment variable is defined
echo At least one ofthese environment variable is needed to run this program
goto exit
这样在每次运行 startup.bat 时就自动注册了 JAVA_HOME , JRE_HOME 。
运行 startup.bat ,提示 “ 信息: Server startup in xxxxx ms” OK 大功告成。