Tomcat启动遇到的常见问题

如果一切顺利,我们就可以看到非常熟悉的 Tomcat 窗口 。但是,由于各种原因,我们可能会碰到一些问题, 下面 就具体分析一下 Tomcat 不能正常启动的原因 。

3.1 环境变量设置问题
如果机器上没有安装 JDK 或者环境变量 JAVA_HOME 或 CATALINA_HOME 没有设置正确, Tomcat 就不能正常启动。

3.1.1 下面 这个错误对话框的意思是 Windows 不能发现 “-Djava.endorsed.dirs=” 命令,下面背景的黑窗口的错误是 JAVA_HOME 环境变量应该指向 JDK 而不是 JRE 的根目录(本 例 故意把把 JAVA_HOME 指向 JRE 的根目录,所以产生这个错误)。 在这种情况下,我们在可以重新设置环境变量 JAVA_HOME 并指向 JDK 的安装目录即可。




3.1.2 下面这个错误是因为 CATALINA_HOME 环境变量设置不正确,从而造成 Tomcat 不能正常启动。

C:\carl>startup
CATALINA_HOME C:\
The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program

3.1.3 下面这个错误是由于错误地设置了 Java 启动参数 xms256M ,正确的写法应该是 -Xms256M ,请注意大小写。大家知道,在 Java 命令行中, -Xms 表示 JVM 开始启动时所分配的内存大小,而 -Xmx 表示 JVM 运行时最大所能占用的的内存大小,如果您的应用程序所需的内存超过 Xmx 的值, JVM 就会抛出 Out of Memeory( 内存不足 ) 的异常而停止。当然, Xmx 的最大值不应超过物理内存的 70%

D:\back\blog>start_tomcat_debug.bat
D:\back\blog>set JAVA_OPTS=-xms256M
D:\back\blog>rem 请将 JAVA_HOME 环境变量修改到您的 JDK 安装目录
D:\back\blog>set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_09
D:\back\blog>rem 请将 CATALINA_HOME 环境变量修改到您的 Tomcat 安装目录
D:\back\blog>set CATALINA_HOME=C:\carl\it\tomcat_research\jakarta-tomcat-5.0.28
D:\back\blog>rem 开始调用 catalina.bat 文件
D:\back\blog>call C:\carl\it\tomcat_research\jakarta-tomcat-5.0.28\bin\catalina. bat debug
Using CATALINA_BASE:   C:\carl\it\tomcat_research\jakarta-tomcat-5.0.28
Using CATALINA_HOME:   C:\carl\it\tomcat_research\jakarta-tomcat-5.0.28
Using CATALINA_TMPDIR: C:\carl\it\tomcat_research\jakarta-tomcat-5.0.28\temp
Using JAVA_HOME:   C:\Program Files\Java\jdk1.5.0_09
debug
无效的选项: -xms256M

用法:
jdb < 选项 > < > < 参数 > ...

如果遇到类似问题,可以用下面的方法重新设置一下
JVM 启动时的内存参数,在 startup.bat 脚本中加上下面这一行:

set JAVA_OPTS=-Xms256m -Xmx512m

上面这行表示
Tomcat 初始启动内存至少需要 256M ,而最大可能占用内存为为 512M 。有兴趣的读者可以在 startup.bat 里加上这行参数,启动 Tomcat ,您会从 Windows 任务管理器中看到您使用的内存迅速飙升。

3.2 Tomcat 应用服务器的配置问题及其中部署的某个 Web 应用问题

3.2.1   Tomcat 端口冲突,具体错误如下窗口所示。这表明缺省的 8080 端口已经被占有,所以 Tomcat 不能启动,我们可以通过修改 Tomcat 的配置文件 server.xml 来重新定义端口号即可启动,或者停止已经使用 8080 端口的程序。有时我们并没有启动 Tomcat ,也没有其它应用程序占用 8080 端口,但是 Tomcat 还抛出这个错误。这可能是因为上次我们关闭 Tomcat 时,并没有真正关闭 Tomcat 。在这种情况下,请从 Windows 任务管理器中检查一下有无一个 java.exe 的程序正在运行,如果发现,强行 kill java.exe ,然后重启试试。




3.2.2   Tomcat 配置文件有错误,产生异常。有时我们在修改 server.xml 文件时,不小心多加或者多删了一个 </>标签 ,可能造成 Tomcat 不能正常启动。下面的窗口说明了这个问题。




3.2.3   Tomcat 中部署的某个 Web 应用发生异常。这时 Tomcat 能正常启动,但在 Tomcat 启动窗口里发现一大堆异常,如 data source 没有正确定义,程序抛出异常等等都有关系。下面的这个例子是 Tomcat 自带的 balancer web 应用程序启动时产生错误。该问题是因为我们错误的修改了 balancer.xml 文件造成的。




3.2.4   Web 应用程序的 jar 文件丢失,如 JDBC 数据库连接文件 class12.jar, mysql.jar 没有拷贝到 Webapp 的 WEB-INF\lib 目录下就会产生异常。尤其要注意的是在 Tomcat5 以前的版本中,公共 jar 文件包通常放在 Tomcat 安装目录下的 common\lib 子目录中,但在 Tomcat6.0 中,这个公共目录改为 lib 子目录。

3.3 未知错误

3.3.1 有时 Tomcat 的启动窗口一闪而过,根本就看不出启动过程中发生了什么错误。 这中间的原因有好多种,最常见的解决办法就是使用 run 命令,打开 startup.bat 文件,找到下面这行:

call "%EXECUTABLE%" start %CMD_LINE_ARGS%

并将它修改为:

call "%EXECUTABLE%" run %CMD_LINE_ARGS%

这样, Tomcat 启动时就不会弹出新窗口,我们就可以从容不迫地观察 Tomcat 的启动错误,并解决问题,请参考上面关于 run 命令的解释。

3.3.2 另外,阅读 Tomcat 的启动日志文件也是我们解决问题的重要办法,缺省的 Tomcat 日志是放在 Tomcat 安装目录的 logs 子目录下。例如下面这段日志说明 JspServletViewer 这个 Web 应用缺少 Map Object 的相关 jar 文件包,从而找不到 com/esri/mo2/map/core/Layout 这个 Java 类。

2008-02-23 11:19:30 StandardContext[/JspServletViewer]Exception sending context initialized event to listener instance of class com.esri.svr.cmn.FileRewriterContextListener
java.lang.NoClassDefFoundError: com/esri/mo2/map/core/Layout
at com.esri.svr.cat.ServiceXMLHandler.startElement ServiceXMLHandler.java:47)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值