gpt4 book ai didi

java - wiremock 与 jetty9 的兼容性

转载 作者:行者123 更新时间:2023-11-29 04:43:43 25 4
gpt4 key购买 nike

我正在尝试使用 wiremock (testCompile 'com.github.tomakehurst:wiremock:2.1.4-rc3') 在使用 'org.eclipse.jetty:jetty-server:9.3 的网络应用程序中执行 JUnit 测试.6.v20151106' 作为 gradle 依赖项。

当我运行 Junit 测试时,出现错误并且 wiremock 2.1.4-rc3 似乎与 jetty9 不兼容...

[错误: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;
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)

最佳答案

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

您正在使用 Jetty 9.3.6.v20151106,WireMock 2.1.4-rc3 依赖于 Jetty 9.2.13.v20150730。

此方法已删除,在 Jetty 9.3.6 的 org.eclipse.jetty.server.Request 中不存在。

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

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

关于java - wiremock 与 jetty9 的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com