1. Tomcat启动失败
netstat -tuln | grep 8080(默认端口)查看端口占用情况,若被占用,可通过kill -9 <进程ID>终止占用进程,或修改/etc/tomcat/server.xml中的<Connector port="8080">端口号。/etc/tomcat/server.xml(或对应版本的conf目录)是否有语法错误(如未闭合的标签、拼写错误),可使用XML验证工具辅助检查。tomcat)对/usr/share/tomcat(或安装目录)、logs、work等目录有读写权限,执行sudo chown -R tomcat:tomcat /usr/share/tomcat和sudo chmod -R 755 /usr/share/tomcat。/etc/default/tomcat(或/etc/tomcat/tomcat7),修改JAVA_OPTS变量增加堆内存(如-Xms512m -Xmx1024m),避免因内存不足导致启动失败。java -version查看JDK版本,必要时使用sudo apt install openjdk-11-jdk安装对应版本。2. 端口冲突
sudo lsof -i:8080(替换为冲突端口号)查看占用进程,通过kill -9 <进程ID>终止非必要进程;若端口被系统关键进程占用,修改/etc/tomcat/server.xml中的端口号(如将8080改为8081),并重启Tomcat。3. 中文乱码
/etc/tomcat/logging.properties,将java.util.logging.ConsoleHandler.encoding = ISO-8859-1改为UTF-8。/etc/tomcat/server.xml的<Connector>标签中添加URIEncoding="UTF-8"(如<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" .../>),确保请求参数正确解码。4. 无法访问Tomcat管理页面
tomcat-users.xml未配置管理角色,或防火墙阻止了8080端口访问。/etc/tomcat/tomcat-users.xml,添加管理角色和用户(如<role rolename="manager-gui"/><role rolename="admin-gui"/><user username="admin" password="yourpassword" roles="manager-gui,admin-gui"/>),保存后重启Tomcat。sudo ufw allow 8080/tcp允许8080端口访问。5. 内存溢出(OutOfMemoryError)
/etc/default/tomcat,修改JAVA_OPTS增加堆内存(如-Xms1024m -Xmx2048m)和元空间(如-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m)。-XX:+UseG1GC使用G1垃圾回收器(适合大内存应用),提高垃圾回收效率。jmap -heap <PID>获取堆转储),定位未释放的对象(如静态Map、未关闭的数据库连接),优化代码减少不必要的对象创建。6. 部署WAR文件后出现404错误
webapps目录权限不足或server.xml配置错误。/var/lib/tomcat/webapps(默认路径),确认Tomcat已自动解压(生成同名目录),若未解压,可手动解压或重启Tomcat。http://localhost:8080/yourapp对应yourapp.war),检查server.xml中的<Context>路径配置是否正确。sudo chown -R tomcat:tomcat /var/lib/tomcat/webapps,确保Tomcat用户对webapps目录有读写权限。7. 无法绑定到低于1024的端口(如80端口)
tomcat用户运行,无root权限。/etc/tomcat/server.xml,将<Connector port="80">改为<Connector port="8080">(或其他高端口),重启Tomcat。sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080,将80端口请求转发到8080端口(需持久化iptables规则,避免重启失效)。