Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决嵌套异常是java.lang.NoClassDefFoundError:org/eclipse/jetty/server/session/SessionDataStore?_Java_Spring_Spring Boot_Jetty_Wiremock - Fatal编程技术网

如何解决嵌套异常是java.lang.NoClassDefFoundError:org/eclipse/jetty/server/session/SessionDataStore?

如何解决嵌套异常是java.lang.NoClassDefFoundError:org/eclipse/jetty/server/session/SessionDataStore?,java,spring,spring-boot,jetty,wiremock,Java,Spring,Spring Boot,Jetty,Wiremock,我正在迁移一个旧的多模块项目。我不能迁移,因为它有很多依赖项,所以我只进行一次迁移,希望它会更容易 我将Spring boot升级到2.4.3版,并不断出现以下错误: 原因:org.springframework.context.ApplicationContextException: 无法启动web服务器;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 正在创建中定义了名为“JettyServletWebServ

我正在迁移一个旧的多模块项目。我不能迁移,因为它有很多依赖项,所以我只进行一次迁移,希望它会更容易

我将Spring boot升级到2.4.3版,并不断出现以下错误:

原因:org.springframework.context.ApplicationContextException: 无法启动web服务器;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 正在创建中定义了名为“JettyServletWebServerFactory”的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

我正在绞尽脑汁试图解决这个问题,但没有取得任何进展

我如何解决它

更新:

我尝试将Spring Boot降级到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。我不能降低弹簧靴的等级,因为wiremock落后了。我还有别的选择吗

更新4:
我发了一封信。我希望没有必要修补wiremock或重写测试代码库。

Spring Boot 2.4.3基于Jetty 9.4.38.v20210224。您正在使用的Jetty版本中不存在
NoClassDefFoundException
中报告的类
SessionDataStore


因此,解决方案可能是升级到Jetty 9.4.38.v20210224。

关于Jetty Github问题,我得到了一个答案,解决了我的问题,使用了
Jetty bom
,因此
Jetty
可以自行处理:

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

我是否需要排除特定的jetty库?它们有一组东西,比如servlet、核心、服务器、客户端等等。我认为,您应该从
org.springframework.boot:spring-boot-dependencies:2.4.3导入依赖项管理,或者尝试使用项目中定义的相同版本。所以,我不认为你必须排除一些东西。我更新了我的帖子。由于Wiremock和不兼容的jetty版本,看起来一切都变得一团糟。你还有别的想法吗?
<dependency>
  <groupId>com.github.tomakehurst</groupId>
  <artifactId>wiremock-jre8</artifactId>
  <version>2.27.2</version>
  <type>pom</type>
</dependency>