記錄一發javaweb項目升級的血與淚

最近手頭有個公司的老項目使用的是tomcat5.5 jdk1.6,

使用框架struts2+ibatis

由於客戶方提出項目存在bug是因爲tomcat5.5存在漏洞引發的

故項目經理要我對此項目進行升級

升級目標:jdk1.7,tomcat8.5    (聽一個算是公司大牛的同事說他們測試過tomcat8.0也存在漏洞,雖然不知道他們是怎麼測試的)

在升級的過程中出現了一個問題,問題是這樣的

當我在eclipse中運行項目的時候 項目可以正常跑動,但是當我把項目打成war包之後部署到tomcat8.5中運行的時候,

問題出現了。當我進行登錄的時候 發現tomcat報出空指針,這個空指針指向的是下面這句代碼

這個sqlMap.getSqlMap()返回的是個null

於是我進入了這個方法,發現在下面這一句的時候

sqlMap怎麼也接收不到SqlMapClientBuilder.buildSqlMapClient(reader);返回的值。

我屮艸芔茻 這就很奇怪啊!!!

於是立馬把排查目標放在了ibatis的jar包身上

網上說ibatis-2.3.4.726.jar這個版本存在着一些問題 於是我又換了ibatis的jar包

。。匆匆好幾天過去了(由於項目經理經常出差,問了兩個同事 均不得而知,只能自己一個人排查了 )

種種原因都排查了 於是想可能是jar包版本和jar可能存在衝突的原因

由於個人能力有限 於是帶回住處跟小夥伴一起討論排查

17:30下班19:00到家 跟小夥伴一直排查到凌晨3點鐘

惡魔媽媽買面膜。。。 小夥伴也沒辦法了 結果就一個 java.lang.NullPointerException

小夥伴也沒辦法了 最後下了一個可能是jar包衝突的結論!

當項目經理回來的時候我立刻向老大彙報了情況 

老大在他自己電腦上測試說沒問題 what???沒問題???

老大用的tomcat9測試的 然後用了我發給他的tomcat8.5測試了一下

這是出現了跟我相同的問題 老大說是tomcat的問題 

於是我下了tomcat9 發現9需要jdk1.8支持

於是安裝了jdk1.8 這時候怎麼運行都不行的war包果然可以跑起來了 

嘿~ 難道真的是tomcat8.5的原因 但想一下覺得沒道理啊 於是發現了jdk1.8輸出的是中文的日誌信息

而我之前的jdk1.7輸出的日誌信息是英文的 加上想起之前三更半夜跟小夥伴一起debug測試的時候發現jdk很多類進不去

所以猜測有可能是jdk的原因,於是用jdk1.8再次運行tomcat8.5 嘿~ 果然成功登陸進來了

隨後又想到應該不是jdk1.7版本的原因 而是我個人使用的jdk1.7.0_17的原因 於是下載了另一個版本的jdk1.7.0_80(我並不清楚jdk的英文版和中文版)只知道jdk1.7.0_80輸出的日誌信息也是中文的 

例如: jdk1.7.0_17輸出警告就是"Warning" 而jdk1.7.0_80直接就是"警告"這倆字

最後對比了jdk1.7.0_17和jdk1.7.0_80  發現直接大小差距巨大,而一個子版本的推進是不可能有這麼大的改動的 

jdk1.7.0_17 大小90.4M 

jdk1.7.0_80  大小140M

問題解決了 是我使用的jdk1.7.0_17版本的原因 (可能是盜版)

最後附上成功的圖

公司做物聯網的

發佈了41 篇原創文章 · 獲贊 43 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章