首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wiremock与jetty9的兼容性

wiremock与jetty9的兼容性
EN

Stack Overflow用户
提问于 2016-07-01 07:05:28
回答 1查看 3K关注 0票数 1

我正在尝试使用wiremock (testCompile 'com.github.tomakehurst:wiremock:2.1.4-rc3')在使用'org.eclipse.jetty:jetty-server:9.3.6.v20151106‘作为gradle依赖的webapp中执行JUnit测试。

当我运行Junit测试时,我得到一个错误,wiremock 2.1.4-rc3似乎与jetty9不兼容……

错误: org.eclipse.jetty.server.Request.getUri()Lorg/eclipse/jetty/http/HttpURI;:java.lang.NoSuchMethodError

完整堆栈:

代码语言:javascript
复制
java.lang.NoSuchMethodError: org.eclipse.jetty.server.Request.getUri()Lorg/eclipse/jetty/http/HttpURI;
    at com.github.tomakehurst.wiremock.servlet.WireMockHttpServletRequestAdapter.isBrowserProxyRequest(WireMockHttpServletRequestAdapter.java:219)
    at com.github.tomakehurst.wiremock.verification.LoggedRequest.createFrom(LoggedRequest.java:59)
    at com.github.tomakehurst.wiremock.http.AdminRequestHandler.handleRequest(AdminRequestHandler.java:40)
    at com.github.tomakehurst.wiremock.http.AbstractRequestHandler.handle(AbstractRequestHandler.java:41)
    at com.github.tomakehurst.wiremock.servlet.WireMockHandlerDispatchingServlet.service(WireMockHandlerDispatchingServlet.java:99)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
    at org.eclipse.jetty.server.Server.handle(Server.java:517)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
    at java.lang.Thread.run(Thread.java:745)
EN

回答 1

Stack Overflow用户

发布于 2016-07-09 23:03:57

这是一个Jetty服务器兼容性问题。

您使用的是Jetty9.3.6.v20151106,WireMock 2.1.4-rc3依赖于Jetty9.2.13.v20150730。

此方法已被删除,并且在Jetty9.3.6中的org.eclipse.jetty.server.Request上不存在。

代码语言:javascript
复制
public org.eclipse.jetty.http.HttpURI getUri();

最简单的解决方案是将您正在使用的Jetty版本降级,并使用与WireMock相同的版本。或者,您可以派生WireMock并升级您正在使用的Jetty版本。听起来不是最好的?已经有关于重构WireMock以更好地处理此问题的讨论:https://github.com/tomakehurst/wiremock/pull/442

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

https://stackoverflow.com/questions/38134633

复制
相关文章

相似问题

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