NoSuchMethodError io.netty.util.AsciiString.cached

时间:2018-01-16 08:19:51

标签: java vert.x vertx-httpclient

我是Java新手,并且已经开始维护一个用Java编写的现有软件系统,该系统使用Vertx.io。当我调用Vertx Web客户端.get()方法时,我收到netty包的错误。我用谷歌搜索错误,但找不到任何东西。有人可以建议我做错了吗?

这是调用代码:

WebClient client = WebClient.create(vertx);
client
    .get(port, server, path)
    .timeout(5000)
    .send(ar -> {
        if (ar.succeeded()) {
            ...

以下是例外:

java.lang.NoSuchMethodError: io.netty.util.AsciiString.cached(Ljava/lang/String;)Lio/netty/util/AsciiString;
    at io.netty.handler.codec.http.HttpHeaderValues.<clinit>(HttpHeaderValues.java:28)
    at io.netty.handler.codec.http.HttpUtil.<clinit>(HttpUtil.java:41)
    at io.netty.handler.codec.http.EmptyHttpHeaders.<clinit>(EmptyHttpHeaders.java:29)
    at io.netty.handler.codec.http.HttpHeaders.<clinit>(HttpHeaders.java:49)
    at io.vertx.core.http.HttpHeaders.createOptimized(HttpHeaders.java:331)
    at io.vertx.core.http.HttpHeaders.<clinit>(HttpHeaders.java:31)
    at io.vertx.ext.web.client.impl.HttpRequestImpl.<init>(HttpRequestImpl.java:70)
    at io.vertx.ext.web.client.impl.HttpRequestImpl.<init>(HttpRequestImpl.java:54)
    at io.vertx.ext.web.client.impl.WebClientImpl.request(WebClientImpl.java:50)
    at io.vertx.ext.web.client.impl.WebClientImpl.get(WebClientImpl.java:50)
    at ... my calling class

1 个答案:

答案 0 :(得分:1)

事实证明,这个问题是由我作为依赖项添加的另一个Vertx库(vertx-lang-ceylon)引起的,用于与Chime一起进行调度。该版本比其他vertx库旧,这似乎引入了这个问题。

要修复,我编辑了build.gradle文件并更改了

compile 'io.vertx:vertx-lang-ceylon:3.4.1'

compile 'io.vertx:vertx-lang-ceylon:3.5.0'

这解决了这个问题。