Tomcat啟動(dòng)成功,輸入網(wǎng)址后可以顯示小黃貓界面,但是在Tomcat下的服務(wù)卻啟動(dòng)不成功,顯示404(以Jenkins為例,運(yùn)用多種方式查看原因)
注:1、單啟動(dòng)Tomcat服務(wù)是可以啟動(dòng)成功的。
2、webapps下子服務(wù)的war包是沒(méi)有問(wèn)題的(建議從官網(wǎng)下載:http://mirrors.jenkins.io/war-stable/latest/jenkins.war)
若滿(mǎn)足以上2點(diǎn)子服務(wù)依舊不能啟動(dòng)成功,可使用如下幾種方式檢查
1、查看webapps下的war包是否正常解壓,所沒(méi)有解壓成功,可手動(dòng)解壓在webapps下,然后重啟Tomcat即可

2、查看Tomcat所用端口是否被占用,若是被占用可修改端口號(hào)(若是啟動(dòng)后背Java.exe所占用屬于正常情況,因?yàn)閱?dòng)后Tomcat會(huì)一直使用Java環(huán)境)
修改端口方式:
1)查看端口號(hào)是否被占用方式:https://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html
2)若是被占用,則在Tomcat的根(安裝)目錄下,找到conf文件夾,進(jìn)入conf文件夾,在里面找到Server.xml文件

3)打開(kāi)Server.xml文件,在文件中找到如下文本并進(jìn)行修改并保存(共需要修改3處位置),保存后重啟Tomcat即可



3、若是本地配置多個(gè)版本的Java環(huán)境也可影響到服務(wù)的啟動(dòng)(不同版本的Java環(huán)境可啟動(dòng)不同版本的Tomcat)
1)查看JVM版本
在Tomcat/bin下,雙擊version.bat腳本可查看詳細(xì)信息,但是由于默認(rèn)腳本不顯示運(yùn)行過(guò)程,故需要修改下DOS腳本
1.打開(kāi)version.bat,將首行的@echo off修改成echo on,表示在控制臺(tái)顯示運(yùn)行過(guò)程

2.在腳本末尾添加pause函數(shù),表示腳本運(yùn)行完之后不自動(dòng)關(guān)閉cmd,可顯示在桌面上

3.修改完之后保存腳本,再次雙擊version.bat腳本及可查看詳細(xì)信息,其中JVM Version表示Tomcat服務(wù)使用的JVM版本

2)如果JDK不是想要的版本,則可在Tomcat/bin下找到setclasspath.bat腳本,手動(dòng)修改其中的JRE路徑(需要修改兩處)
打開(kāi)setclasspath.bat腳本,找到set "JRE_HOME=%JAVA_HOME%",把%JAVA_HOME%替換成本機(jī)需要使用的其他安裝的jre路徑,如set "JRE_HOME=D:\Program Files\Java\jre1.8.0_181",然后重啟即可(所使用的jre需配置環(huán)境變量)

4、若以上三種方式皆沒(méi)有問(wèn)題,則根據(jù)Tomcat打印出的log查看具體原因
1)可在命令行輸入java -jar jenkins.war查看報(bào)錯(cuò)原因(具體報(bào)錯(cuò)原因可自行報(bào)錯(cuò))
2)查看Tomcat/logs下的catalina.log,主要是記錄tomcat啟動(dòng)時(shí)候的信息,在里面可以看到啟動(dòng)的JVM參數(shù)以及操作系統(tǒng)等日志信息

問(wèn)題顯示為Jenkins war包的問(wèn)題。tomcat啟動(dòng)時(shí),項(xiàng)目包無(wú)法編譯,導(dǎo)致失敗
3)查看Tomcat/logs下的host-manager.log,主要記錄服務(wù)器的返回狀態(tài)。由于2)中連接失敗,所以該log中顯示404,等同于直接輸入網(wǎng)址的頁(yè)面顯示狀態(tài)

4)直接查看不能啟動(dòng)的子服務(wù)log
查看Tomcat/webapps中jenkins.out.log,會(huì)輸出錯(cuò)誤的原因點(diǎn)

問(wèn)題顯示JENKINS_HOME有問(wèn)題,具體原因沒(méi)有解釋?zhuān)^續(xù)往下查看,查看統(tǒng)一路徑下jenkins.wrapper.log

問(wèn)題顯示是war包中出現(xiàn)了問(wèn)題,但是沒(méi)有具體標(biāo)處war包問(wèn)題的具體原因,但是有些源碼的位置,若是有源碼的童鞋可以直接去查看源碼,定位問(wèn)題,所示沒(méi)有則繼續(xù)向下查看jenkins.err.log,這個(gè)會(huì)直接顯示出錯(cuò)誤原因

問(wèn)題顯示找不到源文件,所以連接失敗,與Tomcat/logs下的catalina.log記錄點(diǎn)相似。若是此刻還不能判斷問(wèn)題的原因,則還有一個(gè)大招可以將問(wèn)題原因直接輸出在控制板上
5)在不能成成功部署的項(xiàng)目目錄下WEB-INF/classes新建logging.properties文件

其內(nèi)容為
org.apache.catalina.core.ContainerBase.[Catalina].level=INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers=java.util.logging.ConsoleHandler

然后重啟tomcat,會(huì)在控制臺(tái)打印出全部錯(cuò)誤信息

最終問(wèn)題確認(rèn)為jdk的版本問(wèn)題,代碼中使用了很多jdk1.8的屬性,但是我使用的jdk環(huán)境是1.7的所以報(bào)錯(cuò),修改后即可成功。修改方法上述中有表述
備注:
1、查看問(wèn)題的4個(gè)方法沒(méi)有先后順序,可以先使用添加logging.properties文件的方法輸出問(wèn)題在控制板上在根據(jù)其他方法進(jìn)行修改或者確認(rèn),之所以確認(rèn)該順序是根據(jù)我自己出現(xiàn)問(wèn)題后解決方式思路所確定的,進(jìn)而多花費(fèi)了很多時(shí)間,大家可根據(jù)自身情況選擇定位問(wèn)題的方法
2、最后的添加logging.properties文件的方法在關(guān)機(jī)重啟后logging.properties文件中的內(nèi)容會(huì)消失,若需要再次定位則需要重新添加那兩句內(nèi)容