Alpakka S3Client выбрасывает OptionVal$.contains NoSuchMethodError
Я пытаюсь использовать разъем 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")
}
в акка-стрим (2.11 против 2.5.12). Переменная outPort имеет тип OptionVal.
Этот метод действительно не существует в OptionVal пакета util в akka-actor_2.11:2.2.20. То же самое в репозитории актер Акка. Но здесь это задокументировано как существующее.
Почему эти методы не существуют? Я скучаю по зависимости? я использовал
<dependency>
<groupId>com.lightbend.akka</groupId>
<artifactId>akka-stream-alpakka-s3_2.11</artifactId>
<version>0.19</version>
</dependency>
1 ответ
Проблема здесь в том, что некоторая зависимость вытащила 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.