今天在配置J2EE环境时遇到了一个小问题:在启动tomcat服务器时出现了程序一闪而退的情况,于是在网上查阅了相关资料,解决了这个奇葩问题。以下是我参考的两篇文章,在此先谢过两位前辈!
http://www.sxrczx.com/pages/blog.csdn.net/qq372712203/article/details/18401045.html
http://www.cnblogs.com/zhxlsuyu/archive/2012/02/07/2341607.html
首先说明一下我的环境:win7+Java 8+apache-tomcat-7.0.65(压缩包解压版),Java环境已经配置好:
Java和tomcat服务器的安装目录如下:
JDK: D:\Java\JDK
JRE: D:\Java\JRE
TOMCAT: D:\apache-tomcat-7.0.65
已配置的环境变量如下:
JAVA_HOME: D:\Java\JDK
CLASSPATH: .;%JAVA_HOME%\lib
Path: %JAVA_HOME%\bin;(在这前面还有一大串其他的path,我只将我加上去的写在这里)
要启动tomcat服务器只需要双击运行bin目录中的startup.bat即可。可是当我双击运行时,程序弹出的DOS窗口却一闪而退了,于是我按照网上的博客说的那样,先在startup.bat文件的最后加上一句“PAUSE”,使其在执行完成后可以暂停。至于如何修改,右键这个文件,在打开方式中选择你想用的文本编辑工具就行啦(其实这个文件就是一个文本文档),你可以用记事本打开,在这里我是用的editplus打开这个文件。
加上这个之后,再去运行startup.bat文件就可以看到其出错的原因了。
于是我根据错误的原因查了一些资料,看来这个错误还是很普遍的,存在于非安装版(解压版)的tomcat中,原因是因为较新版本的JDK不支持自动登记环境变量,如JAVA_HOME等。所以我按照博客上说的去tomcat安装目录下的bin文件中的一个名为“setclasspath.bat”的文件中最开始的地方声明环境变量。(具体为什么要在这个文件里修改请参看我上面提供的链接)
PS: 其实setclasspath.bat文件和startup.bat文件是在一个目录下的~
打开这个文件以后是这样的:(不同版本的tomcat中的这个文件的样子可能略有不同,我的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
具体用到的就在上面这段文字中间,我们在其中加入两行代码,设置环境变量JAVA_HOME和JRE_HOME。做到这时突然意识到自己在配置Java环境时就没有设置JRE_HOME啊,于是又加入了环境变量JRE_HOME=D:\Java\JRE(其实最后我又把这个环境变量从系统中删除了,并不影响tomcat的启动,具体的原因我就不清楚了)。最后,在代码中加入一下两行:
保存该文件后再次双击“startup.bat”运行,这次又出错了,变成了这个:
这一次我却怎么也找不到错误原因了,因为网上的博客说的都是因为没有设置环境变量而导致出错,可是我明明设置了啊。纠结了很久,在我准备放弃的时候,我突然发现了自己加进文件里的代码和人家博客上的不一样:我多加了两个分号!!!!
原来这里的语句是不可以加分号的!,我把分号去掉之后在运行于是就成功了!