java.lang.NoClassDefFoundError: org/apache/jute/CsvOutputArchive


1. 問題

  看到上面的錯誤 你怎么想?

  包沖突?我這里不是。項目用到了zookeeper,這個類是zookeeper的核心包里的類。

  控制台一直打印這個錯誤 但是項目不影響使用,奇怪!

 

2. 解決辦法

最后排查是項目在jenkins部署重啟之后,進程沒有啥干凈。

kill -9 id 殺掉最近一次以前的 不在保錯

3. 分析

從網上博客收到啟發

http://blog.csdn.net/li396864285/article/details/54574955

  1. Tomcat啟動,初始化webcontext;
  2. 初始化spring, spring初始某些些bean,這些bean包括了zookeeper的連接相關的bean;
  3. 這時zkClient(獨立線程)已經連接上服務器了,但是classloader沒有加載到org/apache/zookeeper/proto/SetWatches類;
  4. spring初始化失敗,導致Tomcat webcontext初始化也失敗,應用在掛起狀態,但zkClient線程還是正常的;
  5. zookeeper服務器重啟,zkClient開始重連,連接上zookeeper服務器;
  6. zkClient觸發watch的一些代碼,ClassLoader嘗試加載org/apache/zookeeper/proto/SetWatches類,但是發現找不到類,於是拋出異常;
  7. zkClient捕獲到異常,認為重連失敗,close掉connection,休眠幾秒之后,再次重連;

於是出現了zkClient反復重試連接zookeeper服務器,而且都是秒連秒斷的情況

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM