我正在 Spark Slave 上运行一个版本为 Spark-2.5.6-bin-hadoop 的 jar,在提交 jar 时出现此错误
Exception occurred while create new JwtSource
java.lang.NoClassDefFoundError: Could not initialize class io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder
at io.spiffe.workloadapi.internal.GrpcManagedChannelFactory.createNativeSocketChannel(GrpcManagedChannelFactory.java:55)
at io.spiffe.workloadapi.internal.GrpcManagedChannelFactory.newChannel(GrpcManagedChannelFactory.java:41)
at io.spiffe.workloadapi.DefaultWorkloadApiClient.newClient(DefaultWorkloadApiClient.java:133)
at io.spiffe.workloadapi.DefaultJwtSource.createClient(DefaultJwtSource.java:221)
at io.spiffe.workloadapi.DefaultJwtSource.newSource(DefaultJwtSource.java:90)
我使用的spiffe依赖是这个
<dependency>
<groupId>io.spiffe</groupId>
<artifactId>java-spiffe-provider</artifactId>
<version>0.6.3</version>
</dependency>
<dependency>
<groupId>io.spiffe</groupId>
<artifactId>java-spiffe-core</artifactId>
<version>0.6.3</version>
</dependency>
从我在网上找到的任何解决方案来看,问题似乎出在番石榴版本上,我正在部署的 jar 是从
guava 29.0-jre
构建的,而 Spark Slave 从 guava-14.0jar
中选择
/opt/spark-2.4.6-bin-hadoop2.7/jars
请告诉我如何解决这些依赖冲突问题。
一般方法是采用旧库并更新它,可能会将需要旧库的任何其他项目更新为需要新库的新版本。
就您而言,您可能应该更新spark、guava,甚至可能更多。