0

我正在尝试使用Alpakka S3 连接器

当我实例化 S3Client 时,我得到了异常

Exception in thread "main" java.lang.NoSuchMethodError: akka.util.OptionVal$.contains$extension(Ljava/lang/Object;Ljava/lang/Object;)

它发生在

  override def offsetOfModule(out: OutPort): Int = {
if (outPort.contains(out)) {
  pendingBuilder match {
    case OptionVal.Some(composite) ⇒ composite.offsetOfModule(out)
    case OptionVal.None            ⇒ 0 // Output belongs to the last module, which will be materialized *first*
  }
} else
  throw new IllegalArgumentException(s"Port $out cannot be accessed in this builder")

}

在 akka 流中(2.11 与 2.5.12)。变量 outPort 的类型为 OptionVal。

akka-actor_2.11:2.2.20中util包的OptionVal中确实不存在该方法。在akka 演员存储库中也是如此。但在这里它被记录为存在。

为什么这些方法不存在?我错过了依赖吗?我用了

<dependency>
    <groupId>com.lightbend.akka</groupId>
    <artifactId>akka-stream-alpakka-s3_2.11</artifactId>
    <version>0.19</version>
</dependency>
4

1 回答 1

0

这里的问题是一些依赖引入的akka-actor_2.11版本2.2.20非常旧并且没有异常中提到的方法。

看一下 and 的输出,mvn dependency:analyze看看mvn dependency:tree哪个依赖项引入了过时的 Akka。然后通过添加更新该依赖项或强制在您的项目中使用最新的 Akka

<dependencyManagement>
  <dependencies>
    <dependency>
        <groupId>com.typesafe.akka</groupId>
        <artifactId>akka-actor_2.11</artifactId>
        <version>2.5.13</version>
    </dependency>
  </dependencies>
</dependencyManagement>

到你的 POM。

于 2018-06-21T08:41:57.087 回答