好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > tomcat8改了jar加載順序的踩坑記錄

tomcat8改了jar加載順序的踩坑記錄

熱門標簽:靈圖uu電子寵物店地圖標注 虛假地圖標注 承德地圖標注公司 百度地圖標注公司位置要多少錢 400電話號碼辦理多少錢 地圖標注黃河的位置 山東企業外呼系統公司 地圖標注如何改成微信號 濮陽好的聯通400電話申請

記錄一次調試經歷

起因

相同的jar,服務器正常而本地起的項目一直報下圖中的錯。

解釋

首先,這段代碼是hibernate執行有參數的hql的過程中報錯的,最上面那層,對string進行強轉導致的。

看hql及java對象,發現,參數為string,而參數對應的java對象中的字段類型是BigDcimal。猜測可能是問題出現的原因,但相關的代碼沒有找到,繼續看代碼、調試

堆棧信息中 bind()方法的作用(和報錯有關的),從 中獲取type和value,對value進行強轉,其中type是在設置參數階段設置的,如下圖,先根據映射關系找對應的java對象中的類型,找不到采用value.getclass();

org.hibernate.impl.AbstractQueryImpl中,


中間結論

我本地沒問題,代碼就是那么寫的,報錯是應該的,那服務器是怎么跑通的?

繼續

趁早上沒人,遠程調試下服務器項目,過程中,想到是否有人重寫了hibernate的源碼導致的,搜一下,果然。。。

hibernate源碼

重寫的代碼,修改了下,保證了對參數是string的兼容。

聯想一下,tomcat的jar包加載順序從8起發生了改變,不再像之前按照字母順序,先加載的生效。而8之后,該用別的方式,該方式導致不同操作系統結果不同,雖然兩者都用的8,而我是mac,它是linux。。。當時看到那篇博客就覺得有坑,沒想到坑來的這么快。

至于不同操作系統具體的加載方式,需要看tomcat源碼,還沒看~~~

結論

由于生效的class不同,導致本地和服務器的結果不同,不想看源碼的話,可以先把hibernate的重復類刪掉;應該是可以對源碼進行修改,比如改成按照字母順序

不得不吐槽下,tomcat改jar加載順序是為啥呢,原來的按照字母順序多么清晰明了。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

標簽:淮安 樂山 鷹潭 安康 上海 德宏 福州 泰安

巨人網絡通訊聲明:本文標題《tomcat8改了jar加載順序的踩坑記錄》,本文關鍵詞  tomcat8,改了,jar,加載,順序,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《tomcat8改了jar加載順序的踩坑記錄》相關的同類信息!
  • 本頁收集關于tomcat8改了jar加載順序的踩坑記錄的相關信息資訊供網民參考!
  • 推薦文章