您的位置:首页 > 运维架构 > Tomcat

Tomcat异常处理

2015-07-31 21:17 309 查看
初次接触tomcat各种问题层出不穷,就我最近遇到的问题做一个总结。

PS:我安装的JDK是1.8.0_51 tomcat版本:apache-tomcat-7.0.63 免安装版本

1.闪退问题

在cmd命令中在tomcat的bin目录下输入startup.bat

D:\tomcat\apache-tomcat-7.0.63\bin>startup.bat

Using CATALINA_BASE: "D:\tomcat\apache-tomcat-7.0.63"

Using CATALINA_HOME: "D:\tomcat\apache-tomcat-7.0.63"

Using CATALINA_TMPDIR: "D:\tomcat\apache-tomcat-7.0.63"

Using JRE_HOME: "C:\Program Files\Java\jre1.8.0_51"

Using CLASSPATH: "D:\tomcat\apache-tomcat-7.0.63\bin\bootstrap.jar;D:\tomcat\apache-tomcat-7.0.63\bin\tomcat-juli.jar"

1>说明启动正常,但是还是闪退,这时候你就需要去看tomcat安装目录下的logs文件,这个文件的作用是存放Tomcat服务器的日志文件,在tomcat

运行的时候产生动态的日志文件

文件内容:

七月 31, 2015 8:01:07 下午 org.apache.tomcat.util.digester.Digester fatalError

严重: Parse Fatal Error at line 140 column 6: 元素类型 "Host" 必须由匹配的结束标记 "</Host>" 终止。

此时说明在server.xml文件的<Host>不匹配了,因此到指定文件内改一下就好了。

2>此时还有可能是端口号被占用了。可以在cmd中用netstat -ano命令查看

协议 本地地址 外部地址 状态 PID

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 932

TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4

注:

PID就是个进程的身份标示,程序一运行系统就会自动分配给进程一个独一无二的PID进程中止后PID被系统回收,

可能会被继续分配给新运行的程序。也就是进程号

nestat用法:

Netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

在cmd命令行中输入: netstat /? 显示如下

显示协议统计信息和当前 TCP/IP 网络连接。

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]

-a 显示所有连接和侦听端口。

-b 显示在创建每个连接或侦听端口时涉及的

可执行程序。在某些情况下,已知可执行程序承载

多个独立的组件,这些情况下,

显示创建连接或侦听端口时

涉及的组件序列。在此情况下,可执行程序的

名称位于底部 [] 中,它调用的组件位于顶部,

直至达到 TCP/IP。注意,此选项

可能很耗时,并且在你没有足够

权限时可能失败。

-e 显示以太网统计信息。此选项可以与 -s 选项

结合使用。

-f 显示外部地址的完全限定

域名(FQDN)。

-n 以数字形式显示地址和端口号。

-o 显示拥有的与每个连接关联的进程 ID。

-p proto 显示 proto 指定的协议的连接;proto

可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s

选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:

IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。

-q 显示所有连接、侦听端口和绑定的

非侦听 TCP 端口。绑定的非侦听端口

不一定与活动连接相关联。

-r 显示路由表。

-s 显示每个协议的统计信息。默认情况下,

显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;

-p 选项可用于指定默认的子网。

-t 显示当前连接卸载状态。

-x 显示 NetworkDirect 连接、侦听器和共享

终结点。

-y 显示所有连接的 TCP 连接模板。

无法与其他选项结合使用。

interval 重新显示选定的统计信息,各个显示间暂停的

间隔秒数。按 CTRL+C 停止重新显示

统计信息。如果省略,则 netstat 将打印当前的

配置信息一次。

由上可以看出80端口号被占用且PID为4,那么现在就可以去查看到底被那个应用程序占用了

taklist | findstr "4"

System Idle Process 0 Services 0 4 K

System 4 Services 0 293,564 K

占用端口号为4的应用程序时System

关闭进程

taskkill /pid 4

错误: 无法终止 PID 为 4 的进程。

原因: 拒绝访问。

因为是系统进程,所以结束不掉。

2.JAVA_HOME环境变量没有配置好

1>在环境变量里面新建JAVA_HOME

JAVA_HOME=JDK安装目录

之后,在path后面添加;%JAVA_HOME%\bin 前面分号隔开别少了

2>之后再用户变量框下新建,变量名为classpath

变量值: classpath=.;%JAVA_HOME%\lib\tools.jar; %JAVA_HOME%\lib\rt.jar //前面是 .;

3>再在dos下输入java -version查看配置是否成功。

3.Tomcat环境配置有问题

1>需要对TOMCAT_HOME进行设置

TOMCAT_HOME=D:\tomcat\apache-tomcat-7.0.63

2>然后再classpath后面加%TOMCAT_HOME%\common\lib

在path后面添加 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%TOMCAT_HOME%\lib

3>最后启动bin目录下的startup.bat,在浏览器页面输入http://localhost:8080/如果出来了欢迎页面则表示成功了。

总结:在tomcat出现问题的时候,应该去logs文件下查看日志,然后看提示的错误,根据错误进行排除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: