如何解析嵌套异常是java.lang.noclassdeffounderror:org/eclipse/jetty/server/session/sessiondatastore?

vu8f3i0k  于 2021-07-22  发布在  Java
关注(0)|答案(2)|浏览(401)

我正在迁移一个旧的多模块项目。我不能迁移,因为它有很多依赖项,所以我只做了一次迁移,希望它会更容易。
我将spring boot升级到2.4.3版本,并不断出现以下错误:
原因:org.springframework.context.applicationcontextexception:无法启动web服务器;嵌套异常为org.springframework.beans.factory.beancreationexception:创建名为“jettyservletwebserverfactory”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/web/servlet/servletwebserverfactoryconfiguration$embeddedjetty.class]中定义:通过工厂方法示例化bean失败;嵌套异常为org.springframework.beans.beaninstantiationexception:未能示例化[org.springframework.boot.web.embedded.jetty.jettyservletwebserverfactory]:工厂方法“jettyservletwebserverfactory”引发异常;嵌套的异常是java.lang.noclassdeffounderror:org/eclipse/jetty/server/session/sessiondatastore,位于org.springframework.boot.web.servlet.context.servletwebserverapplicationcontext.onrefresh(servletwebserverapplicationcontext)。java:162)
我的jetty版本是9.2.28.v20190418。
我正在绞尽脑汁试图解决这个问题,但没有取得任何进展。
我该怎么解决?
更新:
我试着把SpringBoot降级到2.3.3.release,我试着把所有jetty组件升级到11.0.1,没有区别。它得到了不那么清晰,更边缘的错误信息。
更新2:
当我启动spring boot应用程序时,我收到一条消息:
说明:
试图调用不存在的方法。尝试从以下位置进行:

org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory.configureSession(JettyServletWebServerFactory.java:242)

以下方法不存在:

'void org.eclipse.jetty.server.session.SessionHandler.setMaxInactiveInterval(int)'

该方法的类org.eclipse.jetty.server.session.sessionhandler可从以下位置获得:

jar:file:/Users/dmytro/.m2/repository/org/eclipse/jetty/jetty-server/9.2.28.v20190418/jetty-server-9.2.28.v20190418.jar!/org/eclipse/jetty/server/session/SessionHandler.class

我还是不明白怎么解决,因为我没有和你一起工作 Jetty 以前太多了,但看起来有点像。
更新3:
经过无数个小时的调试,我发现 wiremock:2.27.2 以及 spring-boot:2.4.3 . 它们都依赖于不兼容的 jetty , jetty:9.2.28.v20190418 以及 jetty:9.4.38.v20210224 .
问题是我不能移除wiremock。我不能降低Spring Boot,因为wiremock是滞后的。我还有别的选择吗?
更新4:我在github上发布了一个问题。我希望没有必要修补wiremock或重写测试代码库。

ggazkfy8

ggazkfy81#

关于jetty github问题,我得到了一个解决问题的答案 jetty-bom ,所以 jetty 可以自己照顾自己:

<dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-bom</artifactId>
        <type>pom</type>
    </dependency>

这对我来说是天衣无缝的。
更新:
在我做到之前,一切都很顺利 mvn clean install ,所以在我的案例中,另一个绝对必要的依赖性是:

<dependency>
  <groupId>com.github.tomakehurst</groupId>
  <artifactId>wiremock-jre8</artifactId>
  <version>2.27.2</version>
  <type>pom</type>
</dependency>
ve7v8dk2

ve7v8dk22#

Spring Boot2.4.3基于jetty 9.4.38.v20210224。班级 SessionDataStore 报告于 NoClassDefFoundException 在您正在使用的jetty版本中不存在。
因此,解决方案可能是升级到jetty 9.4.38.v20210224。

相关问题