日常問題系列——JVM參數定位ClassNotFoundException/NoClassDefFoundError

背景

    由於華爲fushioninsight平臺升級了版本(spark、hadoop版本大躍進),導致我司的大數據平臺對接失敗,最近,根據華爲客戶端的jar包,重新編譯大數據平臺代碼,在重新對接過程中,出現了一些jar包導致的問題,本文就記錄一個解決ClassNotFoundException/NoClassDefFoundError異常的過程。異常信息如下:
在這裏插入圖片描述

解決過程

  • 在lib下使用grep -R -i “xxxxx” .命令,查找該類是否存在某個jar包中,結果顯示存在。
  • 查看該類加載自哪個jar包,筆者現在的有兩種方法去查看
    a) 使用arthas工具sc命令;
    b) java啓動命令中添加-verbose:class參數
        由於平臺設計原因,jetty進程啓動過程中,如果發生異常,平臺會自動把jetty進程殺掉,所以沒法使用arthas工具去定位,所以本次異常定位使用b方式去查看該class加載自那個jar。
        最終發現該class加載的jar不對,於是調整了這兩個jar包在在spark --jars中的順序。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章