Spark集成的包與引入包沖突


今天在編寫Spark應用的時候,想把處理結果輸出為JSON字符串,查到Java比較常用的JSON處理包gson,按照其API編寫代碼后運行程序,總是出現"NoSuchMethodException in Gson JsonArray"。
 
開始我以為是導入包的方式有問題,但查看出錯位置發現,只有JsonArray的add方法報錯了,這里調用add方法把一個String類型變量添加到JsonArray中,前面的調用並未報錯,由此看來jar包應該成功導入了。
 
從Intellij IDEA中查看JsonArray類的反編譯源碼,發現確實沒有參數為String的add方法,跟我看到的API文檔不同,確認了一下我看的文檔與使用的包版本確實是一致的。
 
仔細觀察后發現這個類文件的位置在spark-assembly-1.6.0-hadoop2.6.0.jar 中,並不是我導入的gson-2.8.2.jar。由此我意識到,是spark的這個jar包本身打包了gson的類文件,而且其版本比較低,缺少了一些新加入的函數。

 

根據這個低版本內擁有的方法修改后,便可以成功運行。


免責聲明!

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



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