简体   繁体   English

wiremock与jetty9的兼容性

[英]wiremock compatibility with jetty9

I am trying to use wiremock (testCompile 'com.github.tomakehurst:wiremock:2.1.4-rc3') in to execute JUnit tests in a webapp which is using 'org.eclipse.jetty:jetty-server:9.3.6.v20151106' as a gradle dependency. 我正在尝试使用wiremock(testCompile'c​​om.github.tomakehurst:wiremock:2.1.4-rc3')来在使用'org.eclipse.jetty:jetty-server:9.3.6的webapp中执行JUnit测试。 v20151106'作为gradle依赖。

When I run Junit tests, I get an error and wiremock 2.1.4-rc3 doesn't seem to be compatible with jetty9... 当我运行Junit测试时,我收到一个错误,并且线程2.1.4-rc3似乎与jetty9不兼容......

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

Full Stack: 全栈:

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)

This is a Jetty server compatibility problem. 这是Jetty服务器兼容性问题。

You're using Jetty 9.3.6.v20151106, WireMock 2.1.4-rc3 depends on Jetty 9.2.13.v20150730. 你使用的是Jetty 9.3.6.v20151106,WireMock 2.1.4-rc3依赖于Jetty 9.2.13.v20150730。

This method was removed and doesn't exist on org.eclipse.jetty.server.Request in Jetty 9.3.6. 此方法已删除,并且在Jetty 9.3.6中的org.eclipse.jetty.server.Request中不存在。

public org.eclipse.jetty.http.HttpURI getUri();

The easiest solution is to downgrade the version of Jetty you're using, and use the same version as WireMock. 最简单的解决方案是降级您正在使用的Jetty版本,并使用与WireMock相同的版本。 Alternatively, you could fork WireMock and upgrade the version of Jetty you're using. 或者,您可以分叉WireMock并升级您正在使用的Jetty版本。 Doesn't sound optimal? 听起来不是最佳? There has already been discussion about refactoring WireMock to handle this better: https://github.com/tomakehurst/wiremock/pull/442 已经讨论过重构WireMock以更好地处理这个问题: https//github.com/tomakehurst/wiremock/pull/442

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM