问题:
SparkStreaming开发过程中,遇到了netty版本冲突问题:
Exception in thread "main" java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.defaultNumHeapArena()I
使用Maven命令查看pom依赖(或者直接使用IDEA的Maven面板查看):
mvn dependency:tree
随即找到netty所处的包:
[INFO] | +- org.apache.hadoop:hadoop-hdfs:jar:2.6.0-cdh5.15.1:compile
[INFO] | | +- io.netty:netty:jar:3.10.5.Final:compile
解决方案:
在指定依赖中添加:
<!--hadoop依赖-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
<!--将netty包排除-->
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
然后添加高版本netty:
<!--解决io.netty.buffer.PooledByteBufAllocator.defaultNumHeapArena()I异常,-->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.18.Final</version>
</dependency>