想在 IDEA 上运行 Hadoop 的单测,以为 Maven 相关的依赖和插件下载好就能跑了是吧?果不其然,没那么简单,下面就收到一个报错了: org.apache.hadoop.ipc.xxx不存在,见下图。
上面显示的这个是什么包?为什么会报这个错呢?其实不用着急,只要你了解 Hadoop 底层,有点后端的基础,慢慢推敲一下。看到 RPC,那么可以理解,这些不存在的文件为什么不存在呢?原因就是没有通过 protoc 来生成,这些 RPC 的客户端一般都是这样生成的,如果没有,那么我们运行的某些单测就跑不起来了。当然也不会是每个单测都不行,因为有些单测就是测试 1 1=2 的,这种不用网络,这要内存里计算就可以了,但是如果涉及到 RPC,接口之类的单测,就需要临时去生成这些类,然后才能运行了,那很简答,我们本地运行一下 mvn install -DskipTests -o
基本上就可以解决问题了,-o
是因为我们的 Maven 依赖都下载好了,离线运行就可以了,否则可能还会因为 Maven Plugin 之类的问题,要去下载包的(应该 pom 里可以配置关掉,但是懒得找了)。
可以看到下面的测试效果,IDEA 里也是写测 RPC 这类型的单测的。