Tomcat是常见的免费的web服务器,非常好用,但是经常会出现各种错误。
(Tomcat资源:https://download.csdn/download/june_anlanruoshui/10826865)
运行Tomcat/bin/startup.bat时闪退,可以在startup.bat最后加入一句pause,使运行窗口不关闭,便于排错(调试完成记得删除)
一、 没有正确定义JRE_HOME环境变量。
Error:the JRE_HOME environment variable is not defined correctly
如图:
解决办法:
重新检查JDK配置。
配置方法:
找到“我的电脑”,右键打开属性->高级系统设置->环境变量:
配置JA_HOME:
修改变量 Path ,在最前面加上 %JA_HOME%\bin;
(这是win10如果是其他版本的加在Path前面即可)
(在命令行中运行java -version 检查当前JDK是否配置成功)
二、无法创建Java虚拟机
出现如下错误:
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
错误:无法创建Java虚拟机。
错误:发生致命异常。程序将会退出。
解决办法:
这个可能是 jdk 与 tomcat 版本不一致 导致的,可以尝试升级tomcat版本,或者降低 /升级jdk版本。查找对应的版本再安装尝试一下。
(在命令行中运行java -version 可以检查当前JDK的版本)
三、CATALINA_HOME,CATALINA_BASE的配置错误
出现如下错误:
解决办法:
在环境变量中删除CATALINA_HOME,CATALINA_BASE的配置(如果没有在环境变量里配置过,那么会自动采用bin目录的父目录)。
或者把CATALINA_HOME、CATALINA_BASE设置为正确的TOMCAT目录。
环境参数正确会显示如下图:
(“D:\tomcat”是我的tomcat文件路径)
四:端口已被占用
端口已被占用(我简单以80端口为例,请根据实际情况判断)
Error:Address already in use: JVM_Bind :80
比如:如果你先单独打开了tomcat,又试图在eclipse或IDEA里启动它,相当于是启动两次,当然端口会被占用了。
解决办法:
在运行中输入cmd:
输入:netstat -ano|findstr “80” 查看 端口号包含\"80\"的占用情况(如图有三个端口同时开启)
输入:tasklist|findstr “1828” 查找端口使用者(为java.exe)
输入taskkill /f /t /im java.exe 终止对应进程
五、缺少APR
出现如下:
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:
出现这种情况是这表示没有找到APR。
解决办法:
去 http://tomcat.heanet.ie/native/ 下载编译好的tcnative-1.dll文件拷贝至jdk\bin下,再启动就可以成功加载APR了。
(在我给的Tomcat资源里面有:https://download.csdn/download/june_anlanruoshui/10826865)
六:JDK不兼容
出现如下:
NOTE: Picked up JDK_JA_OPTIONS: --add-opens=java.base/javang=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
JDK不兼容:解决办法同第二点,检查tomcat和JDK版本
七、持久化异常
出现Exception loading sessions from persistent storage
该问题的原因是tomcat的session持久化机制引起的,在%TOMCAT%/work/Catalina/localhost/session.ser 这个文件里,因为tomcat非正常关闭,所以这个文件没有正确地结束(无EOF标记)
解决办法:
1、只需要删除 session.ser文件即可。
2、关闭tomcat的持久化功能,就能一劳永逸的解决这个问题。具体为修改conf下的server.xml文件。在项目的context间加入一句代码
八、给tomcat指定特定的JDK
修改bin文件夹下面的setclasspath.bat文件
set “JRE_HOME=%JA_HOME%”
修改为:
set “JRE_HOME=E:\Java\jdk1.8.0.65”
(根据自己的JDK路径修改)
九、修改端口:
打开…\conf\server.xml
修改“8080”处端口号(tomcat默认端口为8080)
十、利用tomcat部署:
将项目文件放入tomcat\webapps\ROOT
(此处简单以test.html为例)
如出现404错误:请检查文件是否存在/端口是否正确/环境变量是否无误/Tomcat是否启动/访问资源和文件名是否正确……等
问题描述:tomcat修改为80端口之后,发现可以正常启动,但是无法运行项目。
2.解决方案:(1)启动tomcat查看tomcat启动之后的 log日志报错信息以上说,错误的原因是,80端口已经被使用了。
查找被占用端口。 找对应的pid号,在任务管理器中查看占用应用。通过打开运行窗口,输入cmd进入命令窗口。
输入netstat -ano
查看所有端口程序,找到80端口占用程序!
在任务管理器中查看占用应用
发现被一个系统程序占用,而这个系统程序的属性查看,发现是NT Kemel & System
这个其实是visul studio的一个服务程序。接下来就是解决这个占用问题。
解决vs服务占用端口问题。注册列表中把该服务程序对应的端口给他改一个。修改为10进制的4 .
(4)重启电脑,解决问题。Tomcat可以正常运行了。打开vs发现也不影响运行。完美解决问题!欢迎关注本博客[碰拳]
将持续分享成套的知识体系和软件开发问题解决方案。[作揖]
运行AMPserv程序时提示80端口被占用的情况,下面就给大家介绍win10运行APMserv程序提示80端口被占用的解决步骤。
1、点击右键选择任务管理器,如下图所示:
2、在任务管理器中切换到服务项,如下图所示:
3、选择服务后,点击打开服务,如下图所示:
4、选择“标准”,如下图所示:
5、打开标准服务后,找到World Wide Web Publishing Service选项,如下图所示:
6、双击将里面的数字,改为0,随后就能看到Apache已启动。