我已将最新的akka-http添加到我的项目中,但其中包括akka-actor上非常旧的2.4.19版本。因此我还在依赖项中添加了akka-actor版本2.5.4。但是,这会导致以下错误: -
Detected java.lang.NoSuchMethodError error, which MAY be caused by incompatible Akka versions on the classpath.
我的maven配置如下: -
<dependencies>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-http_2.11</artifactId>
<version>10.0.9</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.11</artifactId>
<version>2.5.4</version>
</dependency>
</dependencies>
我错过了什么?是否有任何版本的akka-http使用最新的akka-actor?
更新:添加了依赖关系图
答案 0 :(得分:1)
从文档中的Compatibility Guidelines页面:
Akka HTTP 10.0.x(二进制)与 Akka
2.4.x
以及Akka2.5.x
兼容,但为了方便构建(并因此发布)工件)取决于2.4
系列。根据您构建依赖项的方式,您可能会遇到依赖于akka-actor
系列2.5
的情况,并且依赖于akka-http
系列中的10.0
反过来会转移版本akka-streams
中的2.4
依赖项,这违反了所有Akka模块必须具有相同版本的二进制兼容性要求,因此akka-streams
依赖项必须是相同的版本作为akka-actor
(所以2.5
系列中的确切版本)。为了解决此依赖性问题,您必须明确依赖akka-streams,并使其与Akka环境的其余部分版本相同....
将Maven依赖项更改为以下内容:
<dependencies>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.11</artifactId>
<version>2.5.4</version>
</dependency>
<!-- Explicitly depend on akka-streams in same version as akka-actor -->
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-stream_2.11</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-http_2.11</artifactId>
<version>10.0.9</version>
</dependency>
</dependencies>