java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument

新手上路,请多包涵

我正在尝试在我的本地运行这个 grpc-Java 示例。相应的原始文件在 这里。当我尝试在本地运行时,它从 这里 抛出以下异常:

 Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
    at io.grpc.ServiceDescriptor.validateMethodNames(ServiceDescriptor.java:129)
    at io.grpc.ServiceDescriptor.<init>(ServiceDescriptor.java:83)
    at io.grpc.ServiceDescriptor.<init>(ServiceDescriptor.java:51)
    at io.grpc.ServiceDescriptor$Builder.build(ServiceDescriptor.java:219)
    at io.grpc.examples.helloworld.GreeterGrpc.getServiceDescriptor(GreeterGrpc.java:251)
    at io.grpc.examples.helloworld.GreeterGrpc$GreeterImplBase.bindService(GreeterGrpc.java:84)
    at io.grpc.internal.AbstractServerImplBuilder.addService(AbstractServerImplBuilder.java:125)
    at io.grpc.internal.AbstractServerImplBuilder.addService(AbstractServerImplBuilder.java:63)
    at com.cw.predictive.HelloWorldServer.start(HelloWorldServer.java:56)
    at com.cw.predictive.HelloWorldServer.main(HelloWorldServer.java:92)

这是我 在这里 提到的 pom.xml:

  <dependencies>
         <dependency>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-netty</artifactId>
          <version>1.1.2</version>
        </dependency>

      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-protobuf</artifactId>
        <version>1.1.2</version>
      </dependency>

      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-stub</artifactId>
        <version>1.1.2</version>
      </dependency>
  </dependencies>

原文由 Naresh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.2k
2 个回答
**Please add following dependencies in your project.**
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.6-jre</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.8</version>
</dependency>

原文由 Avinash Pande 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于在 EMR 上收到此错误的任何其他人。为了将 s3a 地址系统用于 S3 文件,我需要 S3aFileSystem Jar,它在 EMR 6.7、Hadoop 3.2.1 集群上似乎不可用——否则我会收到错误 Class org.apache.hadoop.fs.s3a.S3AFileSystem not found 。为了解决这个问题,我在 spark-submit 参数中包含了 --packages org.apache.hadoop:hadoop-aws:3.2.1 。然后我开始收到 OP 问题中指出的错误。降级到 3.2.0 解决了这个问题,但后来我遇到了另一个错误; NoSuchMethodError: SemaphoredDelegatingExecutor while writing files to S3 。我通过升级到 3.2.2 解决了这个问题: --packages org.apache.hadoop:hadoop-aws:3.2.2 。然后我可以使用 EMR 6.7 读写 S3a 地址

原文由 LaserJesus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题