今天做UT,发现一个NoSuchMethod的Error.
原因是Hive.exec把版本11的guava打了进去。
这种问题一般都是由编译和运行不一样导致的。
想吧classpath输出出来,试了下verbose:classes和jps+jinfo,都没搞定。
就直接Object.toStringHelper().omitNullValues();
编译出错,那为什么在UT编译出错呢?
将Guava的在Pom.xml的位置提前..搞定。
为什么项目运行时候没问题呢,
我猜是guava.jar是g开头的……
搜了一下,maven-shade-plugin貌似可以解决这个问题。
那为什么hive要将guava打进去呢?
理解不了
原因是Hive.exec把版本11的guava打了进去。
这种问题一般都是由编译和运行不一样导致的。
想吧classpath输出出来,试了下verbose:classes和jps+jinfo,都没搞定。
就直接Object.toStringHelper().omitNullValues();
编译出错,那为什么在UT编译出错呢?
将Guava的在Pom.xml的位置提前..搞定。
为什么项目运行时候没问题呢,
我猜是guava.jar是g开头的……
搜了一下,maven-shade-plugin貌似可以解决这个问题。
那为什么hive要将guava打进去呢?
理解不了
本文详细介绍了在使用Hive执行时遇到NoSuchMethod Error的问题,原因在于Guava版本不匹配。通过分析问题,作者尝试了多种方法未能解决问题,最终通过调整Pom.xml中Guava的导入位置找到了解决方案。文章还提到了可能的解决方法,如使用maven-shade-plugin,并解释了Hive为何会引入Guava这一技术细节。
1238





