Tomcat 03: 常见问题排查

摘要:
下面列出了Tomcat的常见问题,例如启动失败、屏幕闪烁和404以及启动后的其他常见问题。端口80可能被现有的Tomcat或其他未知软件(如Apache、IIS、Oracle等)占用。

列罗出了Tomcat常见的问题,如不能启动,屏幕一闪而过,启动之后,访问总是出现404等等常见问题。

以下排查手段都是针对通过startup.bat 独立方式启动的Tomcat,集成开发环境IDE(IDEA,ECLIPSE,MYECLIPSE等) 下的Tomcat启动不在此知识点讨论范围之内。

步骤 1 : JAVA_HOME   
步骤 2 : CATALINA_HOME未设置   
步骤 3 : CATALINA_HOME错误设置   
步骤 4 : 端口冲突   
步骤 5 : localhost.yyyy-mm-dd.log   
步骤 6 : Error FilterStart   
步骤 7 : JDK版本   

步骤 1 : 

JAVA_HOME

现象:点击startup.bat之后,屏幕一闪而过
检验:如图所示, 首先通过cmd命令进入控制台,然后切换到对应的目录执行startup命令,得到JRE_HOME environment .... 这么个提示,就表示JAVA_HOME环境变量没有设置。
分析:Tomcat本身是JAVA程序,必须要有JDK才可以执行,所以必须配置JAVA_HOME。

Tomcat 03: 常见问题排查第1张

 步骤 2 : 

CATALINA_HOME未设置

现象:点击startup.bat之后,屏幕一闪而过
检验:如图所示, 首先通过cmd命令进入控制台,然后切换到对应的目录执行startup命令,得到CATALINA_HOME environment .... 这么个提示,就表示CATALINA_HOME环境变量设置错误。
分析:Tomcat执行必须依赖CATALINA_HOME或者CATALINA_BASE这两个环境变量。 如果没有在环境变量里配置过,那么会自动采用bin目录的父目录作为CATALINA_HOME和CATALINA_BASE。 如果配置了,而所配置的地方又不是正确的TOMCAT目录,那么就会出现这个错误。
解决:
1. 在环境变量中删除CATALINA_HOME,CATALINA_BASE的配置,记得不仅要检查环境变量,还要检查用户变量。
2. 或者把CATALINA_HOME设置为正确的TOMCAT目录。

Tomcat 03: 常见问题排查第2张

 步骤 3 : 

CATALINA_HOME错误设置

现象:Tomcat可以成功启动,但是就是不能访问自己配置的web应用,老是提示404错误
检验:如图所示, 在环境变量里,CATALINA_HOME设置在了另一个合法的tomcat目录上,所以无论运行哪个startup.bat,都会导致这个d:/tomcatxxxx目录下的程序被启动,而不是你期望的那个。
分析:默认的Tomcat会优先根据环境变量中的CATALINA_HOME来定位目录,并运行。
解决:
1. 在环境变量中删除CATALINA_HOME,CATALINA_BASE的配置,记得不仅要检查环境变量,还要检查用户变量。
2. 或者使用 how2j Tomcat,已经取消了对环境变量CATALINA_HOME和CATALINA_BASE的依赖。

Tomcat 03: 常见问题排查第3张

步骤 4 : 

端口冲突

现象:屏幕一闪而过,或者不会关闭,但是提示大量错误,其中会看到如图所示的Address already in use: JVM_Bind <null>:80,即表示端口被占用了。

检验:如果是这个错误,在TOMCAT目录下的logs目录里,会有一个日志文件:catalina.yyyy-mm-dd.log(当天时间),在这个日志文件里会记载一样的错误:Address already in use: JVM_Bind <null>:80。即表明80端口被占用了。

分析:端口是独占式的,一旦一个程序占用了这个端口,其他程序就不能够再去占用它了。而80端口,有可能是被已经存在的Tomcat占用了,也有可能是被其他不知名的软件占用了,比如Apache,IIS,Oracle等等。
解决:请按照Tomcat 端口被占用了怎么办? 步骤进行操作,定位占用端口的程序,并关闭,即可。

Tomcat 03: 常见问题排查第4张

 步骤 5 : 

localhost.yyyy-mm-dd.log

现象:404错误
检验:打开tomcat/logs目录里的localhost.yyyy-mm-dd.log文件,发现大量的报错信息。
分析:当server.xml, web.xml配置错误的时候,当前web应用就会部署失败,并且会将错误信息输出到localhost.yyyy-mm-dd.log文件中。
解决: 要在localhost.yyyy-mm-dd.log文件中看提示什么错误,有可能是配置的context目录不存在,有可能是多了一个>符号,具体问题,具体分析了。
 
Tomcat 03: 常见问题排查第5张

 步骤 6 : 

Error FilterStart

现象:404错误,明明有文件,但是就是不能访问。
检验:这个严格地说,也是配置失败,但是tomcat不会大量报错,只会偷偷地来这么一句: startup failed due to previous errors。
分析:过滤器启动失败就会报这个错。
解决:同样的,过滤器启动失败原因也是多种多样,好在它都会把具体错误信息输出到localhost.yyyy-mm-dd.log,这样打开localhost.yyyy-mm-dd.log根据实际情况分析,就可以较快定位问题所在了。

Tomcat 03: 常见问题排查第6张

 步骤 7 : 

JDK版本

现象:404错误,明明有文件,但是就是不能访问。
检验:在命令行中运行java -version 检查一下当前java的版本
分析:当部署的web应用中的类是由高版本JDK编译生成,而当前tomcat运行所使用的JDK又是低版本的话,就会报出如图所示的错误:UnsupportedClassVersionError,进而导致web应用启动失败。
解决:请使用JDK8或者更高版本,请参考 检测JDK版本,以及下载与配置

Tomcat 03: 常见问题排查第7张

免责声明:文章转载自《Tomcat 03: 常见问题排查》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇form表单提交的几种方式adodb.RecordSet的属性和方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python36和Python27共存的方法

Python27和Python37环境的配置 设置环境变量 我的电脑右键属性-高级系统属性-环境变量 选择系统变量中的Path,双击打开 加入你的Python安装路径 C:Python27;C:Python27;Scripts;C:Python36;C:Python36Scripts; 把C:Python27目录下的Python.exe修改成Pytho...

Go 安装(liunx环境)

1、下载安装包 golang官网: https://golang.org/golang的linux安装包: https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz 2、 安装 假定我们要将go安装在 /usr/local目录下 tar -C /usr/local -xzf go1.10.3.linux-am...

如何指定GCC的默认头文件路径

如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631===============================================================================在交叉编译的时候我们需要...

npm配置文件

npm获取配置的方式,优先级由高到底。 命令行参数。 以设置代理为例:--proxy http://server:port即将proxy的值设为http://server:port。 环境变量。 以npm_config_为前缀的环境变量将会被认为是npm的配置属性。以设置proxy为例可以加入这样的环境变量npm_config_proxy=http://s...

java oracle thin 和 oci 连接方式实现多数据库的故障切换

java oracle thin 和 oci 连接方式实现多数据库的故障切换 一、thin方式 该种方式简便易用非经常见。 当中URL为 jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)) (ADDRESS...

win7下JAVA环境变量配置方法

1、首先,根据自己的需要下载1.6或者1.7的JDK,安装JDK。(安装的时候记一下安装目录,后面会用到) 2、右键计算机→属性→高级系统设置→高级→环境变量,在系统变量部分新建名为"JAVA_HOME"的变量,变量值为之前安装jdk的目录,例如本人的为"D:Javajdk1.6.0_10"。 3、在系统变量部分新建名为"classpath"的变量,变量...