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