kafka-connect出現(xiàn)error Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator

我就是bug屆的扛把子呀~
借助google各種英文文獻(xiàn)終于找到一個靠譜的,最欣喜的事莫過于google一個問題時看到綠色的對號!
雖然這篇參考沒有對號,但借助二人的談話,我終于知曉點門路了,把問題解決了,至于原因,我還需要進(jìn)一步探查,隨后補,先記錄一下如何解決的。
癥狀:同時運行kafka-connect-mysql和kafka-connector-hbase(組內(nèi)自己寫的,目的是為了實現(xiàn)mysql-hbase)時報錯如下,按照參考的來說應(yīng)該其他的遇到此類問題也可參照解決方案。
命令:bin/connect-standalone etc/kafka/connect-standalone.properties etc/kafka-connect-hbase/hbase.properties etc/kafka-connect-binlog/binlog-source.properties
錯誤:

error Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator

原因:大概是運行kafka-connect-hbase時讀取plugin.path時堵在那里了。
解決方案:修改confluent-3.3.0/etc/kafka下的connect-standalone.properties(運行distribute mode則修改connect-distribute.properties)中的plugin.path。我是直接簡單粗暴的加了我的java的地址,雖然運行中會提示這里error([2017-11-21 19:50:21,739] ERROR Plugin class loader for connector: 'com.enn.connect.binlog.BinlogSourceConnector' was not found. Returning: org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader@6ec8211c (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:99)),報的是mysql相關(guān)的,但單獨調(diào)試時,mysql是可以的,hbase是會卡在這里,所以暫且忽略這個錯誤。最終整體可以運行了,所以我猜測kafka-connect-hbase是受阻了。待時間空余下來接著研究。

plugin.path的設(shè)置是為了保證classloader隔離

參考解決方案

經(jīng)過各種測試之后,發(fā)現(xiàn)這個問題還是需要解決guava問題,你只需要把pom文件中的所有依賴全都exclude guava就可以最終解決。

終極解決方案就是重新build guava了,把stopwatch修改為public權(quán)限。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容