我正在尝试使用Alpakka S3 connector
当我实例化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-stream中(2.11对2.5.12)。变量outPort的类型为OptionVal。
该方法确实不存在于akka-actor_2.11:2.2.20中的util包的OptionVal中。 akka actor repository中也是如此。但是here它被记录为存在的。
为什么这些方法不存在?我是否想念依赖?我用了
<dependency>
<groupId>com.lightbend.akka</groupId>
<artifactId>akka-stream-alpakka-s3_2.11</artifactId>
<version>0.19</version>
</dependency>
答案 0 :(得分:0)
这里的问题是在akka-actor_2.11
版本2.2.20
中提取了一些依赖项,该依赖项很旧并且没有异常中提到的方法。
看看mvn dependency:analyze
和mvn dependency:tree
的输出,看看哪个依赖项带来了过时的Akka。然后通过添加
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.11</artifactId>
<version>2.5.13</version>
</dependency>
</dependencies>
</dependencyManagement>
到您的POM。