首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >akka.UnsupportedAkkaVersion: Akka的当前版本是[2.5.14],但是akka-http需要版本[2.5.26]

akka.UnsupportedAkkaVersion: Akka的当前版本是[2.5.14],但是akka-http需要版本[2.5.26]
EN

Stack Overflow用户
提问于 2020-03-03 08:10:24
回答 1查看 412关注 0票数 0

这是一堂课:

代码语言:javascript
复制
import akka.Done;
import akka.NotUsed;
import akka.actor.ActorSystem;
import akka.http.javadsl.ConnectHttp;
import akka.http.javadsl.Http;
import akka.http.javadsl.model.ContentTypes;
import akka.http.javadsl.model.HttpEntities;
import akka.http.javadsl.model.HttpHeader;
import akka.http.javadsl.model.HttpRequest;
import akka.http.javadsl.model.HttpResponse;
import akka.http.javadsl.server.AllDirectives;
import akka.http.javadsl.server.Route;
import akka.stream.ActorMaterializer;
import akka.stream.javadsl.Flow;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;

public class Ge extends AllDirectives
{

    private static String host = "localhost";
    private static int port = 8080;
    private static List<HttpHeader> headers;


    public static void main(String[] args) throws Exception
    {
        // boot up server using the route as defined below
        ActorSystem system = ActorSystem.create();

        final ActorMaterializer materializer = ActorMaterializer.create(system);
        final Http http = Http.get(system);
        //In order to access all directives we need an instance where the routes are define.

        Ge ge = new Ge();

        final Flow<HttpRequest, HttpResponse, NotUsed> routeFlow = gridUpdateService.createRoute().flow(system, materializer);

        http.bindAndHandle(routeFlow,
                ConnectHttp.toHost(host, port), materializer);

    }

    private Route createRoute()
    {
        return  route(
                        path(
                                "spec", () ->
                                        get(() -> complete(HttpEntities.create(ContentTypes.TEXT_PLAIN_UTF8, "Ok"))
                                        )
                        )
                );
    }

}

下面是build.gradle中的依赖项:

代码语言:javascript
复制
compile group: 'com.typesafe.akka', name: 'akka-http_2.12', version: '10.1.5'
compile group: 'com.typesafe.akka', name: 'akka-cluster_2.12', version: '2.5.14'

我不知道为什么会出现此错误,尽管我在这里提到了这些版本,并发现这些版本应该兼容,如下所示:

与AkkaAkkaHTTP10.1.x的兼容性(二进制)与Akka >= 2.5.11以及在AkkaHTTP10.1.x生命期内发布的未来Akka 2.x版本兼容。

https://doc.akka.io/docs/akka-http/current/compatibility-guidelines.html

不幸的是,我不能更新akka版本,它必须是2.5.14,因为它是父项目的版本,而更改可能会破坏其他子项目中的功能。无论如何,我可以让akka http与akka版本2.5.14一起工作吗?

下面是完整的堆栈跟踪:

代码语言:javascript
复制
Exception in thread "main" akka.UnsupportedAkkaVersion: Current version of Akka is [2.5.14], but akka-http requires version [2.5.26]
    at akka.AkkaVersion$.require(AkkaVersion.scala:43)
    at akka.AkkaVersion$.require(AkkaVersion.scala:23)
    at akka.http.scaladsl.HttpExt.<init>(Http.scala:57)
    at akka.http.scaladsl.Http$.createExtension(Http.scala:1123)
    at akka.http.scaladsl.Http$.createExtension(Http.scala:892)
    at akka.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:913)
    at akka.actor.ExtensionId.apply(Extension.scala:79)
    at akka.actor.ExtensionId.apply$(Extension.scala:78)
    at akka.http.scaladsl.Http$.apply(Http.scala:1118)
    at akka.http.scaladsl.Http$.apply(Http.scala:892)
    at akka.http.javadsl.Http.delegate$lzycompute(Http.scala:45)
    at akka.http.javadsl.Http.delegate(Http.scala:45)
    at akka.http.javadsl.Http.defaultServerHttpContext(Http.scala:852)
    at akka.http.javadsl.Http.bindAndHandle(Http.scala:232)
    at com.dummy.ui.Ge.startHttp(Ge.java:55)

由于我必须审查一些代码,所以行号会有所变化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 06:17:09

问题不在于akka,而在于我的项目中陈旧的依赖关系。

我之前试过用

代码语言:javascript
复制
compile group: 'com.typesafe.akka', name: 'akka-http_2.13', version: '10.1.5'

它必须已下载了依赖项并用于启动项目。

我做了gradle --refresh-dependencies来解决这个问题。

请确保查看文档以查看模块的兼容性和清除缓存,并重新下载所有依赖项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60502726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档