tomcat下服务启动失败原因
Tomcat启动成功,输入网址后可以显示小黄猫界面,但是在Tomcat下的服务却启动不成功,显示404(以Jenkins为例,运用多种方式查看原因)
注:1、单启动Tomcat服务是可以启动成功的。
2、webapps下子服务的war包是没有问题的(建议从官网下载:http://mirrors.jenkins.io/war-stable/latest/jenkins.war)
若满足以上2点子服务依旧不能启动成功,可使用如下几种方式检查
1、查看webapps下的war包是否正常解压,所没有解压成功,可手动解压在webapps下,然后重启Tomcat即可

2、查看Tomcat所用端口是否被占用,若是被占用可修改端口号(若是启动后背Java.exe所占用属于正常情况,因为启动后Tomcat会一直使用Java环境)
修改端口方式:
1)查看端口号是否被占用方式:https://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html
2)若是被占用,则在Tomcat的根(安装)目录下,找到conf文件夹,进入conf文件夹,在里面找到Server.xml文件

3)打开Server.xml文件,在文件中找到如下文本并进行修改并保存(共需要修改3处位置),保存后重启Tomcat即可



3、若是本地配置多个版本的Java环境也可影响到服务的启动(不同版本的Java环境可启动不同版本的Tomcat)
1)查看JVM版本
在Tomcat/bin下,双击version.bat脚本可查看详细信息,但是由于默认脚本不显示运行过程,故需要修改下DOS脚本
1.打开version.bat,将首行的@echo off修改成echo on,表示在控制台显示运行过程

2.在脚本末尾添加pause函数,表示脚本运行完之后不自动关闭cmd,可显示在桌面上

3.修改完之后保存脚本,再次双击version.bat脚本及可查看详细信息,其中JVM Version表示Tomcat服务使用的JVM版本

2)如果JDK不是想要的版本,则可在Tomcat/bin下找到setclasspath.bat脚本,手动修改其中的JRE路径(需要修改两处)
打开setclasspath.bat脚本,找到set "JRE_HOME=%JAVA_HOME%",把%JAVA_HOME%替换成本机需要使用的其他安装的jre路径,如set "JRE_HOME=D:\Program Files\Java\jre1.8.0_181",然后重启即可(所使用的jre需配置环境变量)

4、若以上三种方式皆没有问题,则根据Tomcat打印出的log查看具体原因
1)可在命令行输入java -jar jenkins.war查看报错原因(具体报错原因可自行报错)
2)查看Tomcat/logs下的catalina.log,主要是记录tomcat启动时候的信息,在里面可以看到启动的JVM参数以及操作系统等日志信息

问题显示为Jenkins war包的问题。tomcat启动时,项目包无法编译,导致失败
3)查看Tomcat/logs下的host-manager.log,主要记录服务器的返回状态。由于2)中连接失败,所以该log中显示404,等同于直接输入网址的页面显示状态

4)直接查看不能启动的子服务log
查看Tomcat/webapps中jenkins.out.log,会输出错误的原因点

问题显示JENKINS_HOME有问题,具体原因没有解释,继续往下查看,查看统一路径下jenkins.wrapper.log

问题显示是war包中出现了问题,但是没有具体标处war包问题的具体原因,但是有些源码的位置,若是有源码的童鞋可以直接去查看源码,定位问题,所示没有则继续向下查看jenkins.err.log,这个会直接显示出错误原因

问题显示找不到源文件,所以连接失败,与Tomcat/logs下的catalina.log记录点相似。若是此刻还不能判断问题的原因,则还有一个大招可以将问题原因直接输出在控制板上
5)在不能成成功部署的项目目录下WEB-INF/classes新建logging.properties文件

其内容为
org.apache.catalina.core.ContainerBase.[Catalina].level=INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers=java.util.logging.ConsoleHandler

然后重启tomcat,会在控制台打印出全部错误信息

最终问题确认为jdk的版本问题,代码中使用了很多jdk1.8的属性,但是我使用的jdk环境是1.7的所以报错,修改后即可成功。修改方法上述中有表述
备注:
1、查看问题的4个方法没有先后顺序,可以先使用添加logging.properties文件的方法输出问题在控制板上在根据其他方法进行修改或者确认,之所以确认该顺序是根据我自己出现问题后解决方式思路所确定的,进而多花费了很多时间,大家可根据自身情况选择定位问题的方法
2、最后的添加logging.properties文件的方法在关机重启后logging.properties文件中的内容会消失,若需要再次定位则需要重新添加那两句内容
tomcat下服务启动失败原因的更多相关文章
- 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案
将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...
- CentOS7下MySQL服务启动失败原因及解决方法
在重启阿里的CentOS7服务器后,重启MySQL 出现错误 Starting mysqld (via systemctl): Job for mysqld.service failed becaus ...
- systemd 相关及服务启动失败原因
1 查看启用的units systemctl list-unit-files | grep enabled 2 查看指定服务的日志 按服务单元过滤 journalctl -u j 查看j.serv ...
- CentOS下,mysql服务启动失败
mysql服务启动失败,可以使用排除法查找原因: 如果修改了my.cnf后重启mysql服务失败,大多数情况下都是配置文件有错误, 可以通过备份原来的配置文件,然后将配置文件清空,只剩下[mysqld ...
- Tomcat启动失败原因
Tomcat启动失败原因 一.Tomcat启动时,要求被加载的项目必须拥有独立路径名称 发布的两个工程具有相同路径名称,这是不允许. 二.8080端口号已经被占用了 启动失败原因,就是8085端口上, ...
- CentOS 7下MySQL服务启动失败的解决思路
今天,启动MySQL服务器失败,如下所示: [root@spark01 ~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): Jo ...
- oracleDBconsole服务启动失败
问题出现的故障: 在一次正常使用企业管理器后,重新启动计算机,再次启动OracleDBConsoleORCL服务时,报:Windows 不能在 本地计算机 启动 OracleDBConsoleo ...
- ipv6禁用导致rpcbind服务启动失败实例
ipv6禁用导致rpcbind服务启动失败实例 昨天在做服务器磁盘分区扩容的时候出现过一个服务启动的问题,在此记录.情景再现:前天晚上申请做磁盘扩容,得到批准后,昨天早上5点开始做停机调整维护 ...
- Docker安装、命令详情、层级架构、docker服务启动失败解决方法
容器背景: 层级架构: 容器对比传统化虚拟机: 可以把docker理解成是一款自带软件(比如:nignx.tomcat.....)的镜像操作系统(首先是要下载镜像) 以下是Windows环境安装Do ...
随机推荐
- Windows许可证即将到期激活教程
电脑提示Windows许可证即将到期,于是自己就在网上找了一些教程,但是并没有激活成功,反而由即将到期变为了通知状态,尝试了各种密钥都不行,也下载了激活工具如暴风激活工具,KMS都不管用,尝试了好多方 ...
- 人生苦短,我用python(目录)
一.python基础篇 python中闭包及延时绑定问题 python中的装饰器.生成器 二.前端 bootstrap框架 BOM&DOM JavaScript中的词法分析 三.数据库 mys ...
- WPF前台界面显示“未将对象引用设置到对象的实例”
在做即时通信项目中,使用WPF的MVVM模式,如果在前台绑定VM,经常会显示波浪线,鼠标放上去提示未将对象引用设置到对象的实例,但程序能正常运行,后来发现如果前台不绑定VM,在后台cs里绑定就不会出现 ...
- 正试图在os加载程序锁内执行托管代码。不要尝试在DllMain或映像初始化函数内运行托管代码 问题解决方法
方法一把vs菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock
- idea 中add configuration
记住:点击“+”号配置tomcat 第一步当然先得建一个web项目 1.file -> new -> project -Next -> Finish -项目建好了接下来就是配置了 - ...
- javascript 十进制转换为二进制
1.十进制转换为二进制 var toBin = (n) => { if(n == 0) return '0'; var res = ''; while(n != 0) { res = n % 2 ...
- python之路-pyc
一.解释型语言和编译型语言 解释性语言:在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言.运行时就不需要翻译,而直接执行就可以了.最典型的例子就是C语言. 编译型语言:没有 ...
- 实训任务04 MapReduce编程入门
实训任务04 MapReduce编程入门 1.实训1:画图mapReduce处理过程 使用有短句“A friend in need is a friend in deed”,画出使用MapReduce ...
- Android四大组件之Service --- 如何启动和停止Service?
启动和停止方法主要是通过Intent来实现 以上一篇中的ServiceTest项目为例来启动和停止MyService这个服务 首先修改activity_main.xml中的代码,如下所示:<Li ...
- 介绍一下Spring Cloud简介
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线).分布式系统的协调导致了样板模式, 使用Spring Clo ...