代码之家  ›  专栏  ›  技术社区  ›  Daniel

Alpakka S3Client抛出OptionVal$。包含NoSuchMethodError

  •  0
  • Daniel  · 技术社区  · 6 年前

    我在试着用 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溪(2.11 vs 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>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   dvim    6 年前

    这里的问题是一些依赖性被拉进来了 akka-actor_2.11 版本 2.2.20

    mvn dependency:analyze mvn dependency:tree 看看哪个依赖带来了过时的阿克卡。然后通过添加

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