成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

解決Java執(zhí)行過程中拋簽名異常的問題

goji / 1999人閱讀

摘要:最近某工程啟動中拋出了一個詭異的問題堆棧比較長主要原因是經(jīng)發(fā)現(xiàn)是由于這個包中的眾多類在多個包中均有實現(xiàn)比如和都有實現(xiàn)如果該進程加載時使用了中的又加載了中的同時和的簽名不一致這樣會導(dǎo)致以上報錯在中查找類發(fā)現(xiàn)在多個帶或者名字的包中均有實現(xiàn)可以通

最近某Java工程啟動中拋出了一個詭異的問題, 堆棧比較長, 主要原因是:

java.lang.SecurityException: class "javax.servlet.AsyncListener""s signer information does not match signer information of other classes in the same package

經(jīng)Google, 發(fā)現(xiàn)是由于javax.servlet這個包中的眾多類, 在多個Jar包中均有實現(xiàn)(比如X和Y都有實現(xiàn)), 如果該Java進程加載時, 使用了X.jar中的javax.servlet.A, 又加載了Y.jar中的javax.servlet.B, 同時X.jar和Y.jar的簽名不一致, 這樣會導(dǎo)致以上報錯.

在IDE中查找類javax.servlet.AsyncListener, 發(fā)現(xiàn)在多個帶javaee或者servlet名字的jar包中均有實現(xiàn), 可以通過以下命令獲取工程的所有依賴:

mvn dependency:tree

為了定位是哪個Jar包導(dǎo)致的該問題, 我們在實現(xiàn)了這個類的Jar包中, 進行簽名檢查:

jarsigner -verify xxx.jar

通過這個命令可以看到該Jar是否有簽名.

最后發(fā)現(xiàn), 這些Jar包中, 只有一個有簽名, 而其他都沒有:

org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile

所以可以推斷應(yīng)該是這個eclipse對servlet的實現(xiàn)的Jar包使用了簽名, 導(dǎo)致和其他相關(guān)Jar包不兼容. (是有多喜歡造輪子)

而這個Jar包, 通過依賴樹, 我們發(fā)現(xiàn)是hive-jdbc 2.3.2依賴引入的(看著hive依賴真混亂..., 記得hbase也是), 通過升級到 3.1.0, 再次檢查依賴, 我們發(fā)現(xiàn)這個Jar包已經(jīng)不在依賴樹中了. 而啟動錯誤也消失了.

或者還有另外一個方法, 把這個有問題的包從hive-jdbc 2.3.2 中exlucde掉, 讓hive使用其他包中的javax.servlet實現(xiàn). 其實即便沒有其他包有javax.servlet的實現(xiàn), 或者其scope為provided, 只要這個工程在tomcat中啟動, 都是可以的. 因為tomcat自帶servlet-api實現(xiàn).

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71969.html

相關(guān)文章

  • java異常處理

    摘要:異常處理機制異常與異常類的繼承體系在程序中,當程序出現(xiàn)意外情況時,系統(tǒng)會自動生成一個來通知程序,從異常發(fā)生出逐漸向外傳播,如果沒有人來處理該異常,就會交給來處理,對異常的處理方法是,打印異常跟蹤棧信息,并中止程序的執(zhí)行。 1 為什么要處理異常? 異常機制可以使程序的異常處理代碼與正常業(yè)務(wù)代碼分離,保證程序代碼的健壯性。在設(shè)計程序的時候,好的程序需要盡可能處理已知的可能產(chǎn)生的錯誤,但是事...

    LuDongWei 評論0 收藏0
  • 兩個月Java實習結(jié)束,繼續(xù)努力

    摘要:花了將近兩個星期完成了功能,期間我編寫的能力也算是有所提升了。所以能看到這篇文章的同學都是大佬如果想看更多的原創(chuàng)技術(shù)文章,歡迎大家關(guān)注我的微信公眾號??赡芨信d趣的鏈接文章的目錄導(dǎo)航微信公眾號端文章的目錄導(dǎo)航端海量精美腦圖 前言 只有光頭才能變強 2018年8月30日,今天我辭職了。在6月25號入職,到現(xiàn)在也有兩個月時間了。 感受: 第一天是期待的:第一次將項目拉到本地上看的時候,代碼...

    snifes 評論0 收藏0
  • #Java異常處理

    摘要:例子二以下開始用異常處理機制捕獲該異常在這里,這個其實就是這里用到了程序運行時的多態(tài)思想。語句就像一個調(diào)用函數(shù),當程序運行中拋出了一個異常對象,就會調(diào)用對應(yīng)的來處理。 傳統(tǒng)的語言如何處理 在一些傳統(tǒng)的語言(如C語言中) if語句來判斷是否出現(xiàn)了例外 全程變量ErrNo 但這有幾個缺點 正常處理與異常處理的代碼同樣處理 可讀性(readability)差 每次調(diào)用一個方法時都進行錯...

    nidaye 評論0 收藏0
  • Java異常處理

    摘要:可以被異常處理機制使用,是異常處理的核心。非檢測異常,在編譯時,不會提示和發(fā)現(xiàn)異常的存在,不強制要求程序員處理這樣的異常。總體來說,語言的異常處理流程,從程序中獲取異常信息。處理運行時異常,采用邏輯合理規(guī)避同時輔助處理。 目錄 什么是Java異常? 當一個Exception在程序中發(fā)生的時候,JVM是怎么做的呢? 當我們編寫程序的時候如何對待可能出現(xiàn)的異常呢? 正文 1. 什么是J...

    Fourierr 評論0 收藏0
  • Java 異常處理 9 個最佳實踐

    摘要:異常處理的個最佳實踐原文地址翻譯出處在中,異常處理是個很麻煩的事情。使用描述性消息拋出異常這個最佳實踐背后的想法與前兩個類似。當你以錯誤的格式提供時,它將被類的構(gòu)造函數(shù)拋出。類提供了特殊的構(gòu)造函數(shù)方法,它接受一個作為參數(shù)。 Java 異常處理的 9 個最佳實踐 原文地址:https://dzone.com/articles/9-...翻譯出處:https://www.oschina.n...

    sihai 評論0 收藏0

發(fā)表評論

0條評論

goji

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<