- spark程序调用高版本gson方法,集群运行时抛出NoSuchMethod异常,本地执行无问题
- 查看依赖,程序本身并没有依赖老版本的gson。
- spark自带gson,版本为2.2.4。spark任务启动时,会优先加载该版本。程序本身编译集成的gson版本不会被加载。
- 如果代码中使用了更高版本的gson才有的方法和特性,就会抛出异常。
使用maven-shade-plugin的relocate功能。该功能将package进行改名成另外一个。程序在运行时,会自动将原package进行改名。
具体方法:org.apache.maven.plugins maven-shade-plugin 3.0.0 package shade mainClass com.google.gson shaded.com.google.gson *:* meta-INF/*.SF meta-INF/*.DSA meta-INF/*.RSA
然后使用maven package进行打包即可 (注意 shade插件使用该方式进行打包,否则shade插件不生效)



