由於合作甲方新項目的原因,需要將Tomcat6升級到Tomcat8。一開始我也是一頭霧水,感覺要涉及到的東西應該會很多。因為老系統遇上新版本難免會出現版本不兼容的情況,由於只有部署包,如果出現需要更改代碼的問題,那就蛋疼了。
簡單介紹下環境:
舊版本:Tomcat6.018,jdk1.6,windows 2008 r2
新版本:Tomcat8.045,jdk1.8,windows 2008 r2
1.安裝jdk1.8
直接安裝並配置環境變量即可,若要在jdk1.6和jdk1.8直接切換,可參考我的另一篇文章《windows下jdk版本切換(安裝多個版本jdk) 》。
2.安裝Tomcat8.0
安裝過程中注意端口的更換,若要同時運行Tomcat6和Tomcat8,則需要更換端口,例如我更換的:
8080-->8088
8005-->8015
8009-->8019
端口號可在tomcat8.0\conf下的server.xml文件中修改,若不需要同時使用tomcat6和tomcat8,則不需要更改端口。
打開http://localhost:8088,若出現Tomcat界面,說明安裝成功。接下來可以部署項目了。
3.部署項目問題
按照正常步驟將項目拷貝到webapps目錄下,注意項目中配置文件的地址端口要由8080更改到8088(若安裝過程中Tomcat8端口未更改則不用更改,自己注意就好),然后我就正常訪問項目地址,結果悲劇了,報錯404,我們知道404是項目路徑出錯的問題。然后我打開Tomcat Manager,發現項目根本沒有被啟動,如下圖所示(打碼的都是項目名字,不影響閱讀):
然后去百度出錯的原因,結果全是沒用的,Google上說的倒是很細致,但是並不能解決我的問題,Google到的是解決no TLDs的問題,然后趕緊看下Tomcat中的log日志,日志如下:
初步斷定系統找不到文件,但是項目在Tomcat6上運行時正常的,不可能出現項目文件配置的問題,所以我斷定應該是jar包版本不兼容的問題,只好一個一個排查。
系統所使用的是ssh框架,所以第一步先從spring的jar包版本入手了,發現使用的是spring3.1,查了一下Tomcat8兼容spring4.0以上版本(Tomcat7也不兼容spring3.1),只好換jar包,嘗試了spring4.1和spring4.3,都是可以使用的。替換哪些jar包,主要看項目中使用到哪些了,也有的jar包被淘汰或被嵌入到別的jar包中了,更換完jar包后,要重啟Tomcat8,發現項目可以正常發布並訪問了。所幸只是Spring版本不兼容,沒遇到需要更改代碼的問題,更換版本可以直接解決。遇到別的問題也不要急,升級Tomcat其實也不難,遇到問題縷清思路,看看是Tomcat的問題還是項目代碼的問題,然后再一個一個解決。
之后我又嘗試將Tomcat版本換到7,過程也是一樣的,尤其注意jar包兼容性的問題。
4.部署過程中遇到的另一個不小心造成的問題
在更改配置文件時不小心刪掉了半個<Licence></Licence>標簽,導致空指針異常,如下圖:
其實看到了這個問題是嚇到了我的,因為一看空指針異常,我的第一印象是代碼問題,不是我害怕改代碼,是項目代碼比較久遠,加上我手頭並沒有源碼。仔細看了一下看到Config就想到配置文件的問題,仔細檢查了配置文件,才發現之前手抖刪掉了半個標簽。
有問題大家多留言交流。謝謝閱讀,歡迎留言。
————————————————
版權聲明:本文為CSDN博主「knqi007」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/knqi007/article/details/76259572