当前位置: 代码网 > it编程>开发工具>Eclipse > Spring Boot WebService服务发布失败:如何解决Jar包缺失导致的java.lang.NoClassDefFoundError异常?

Spring Boot WebService服务发布失败:如何解决Jar包缺失导致的java.lang.NoClassDefFoundError异常?

2025年03月31日 Eclipse 我要评论
spring boot webservice部署失败:排查jar包缺失问题在spring boot中构建webservice服务时,部署和运行问题时有发生。本文分析一个常见的案例:“spring bo

spring boot webservice服务发布失败:如何解决jar包缺失导致的java.lang.noclassdeffounderror异常?

spring boot webservice部署失败:排查jar包缺失问题

在spring boot中构建webservice服务时,部署和运行问题时有发生。本文分析一个常见的案例:“spring boot构建的webservice服务发布测试失败,提示找不到jar包”。

问题描述:

运行程序时抛出java.lang.noclassdeffounderror: org/eclipse/jetty/server/sessionmanager异常,表明找不到org.eclipse.jetty.server.sessionmanager类。该错误出现在使用cxf框架发布webservice服务时。错误信息片段如下:

20:45:16.837 [main] debug org.apache.cxf.resource.defaultresourcemanager - resolving resource <org.apache.cxf.wsdl11.wsdlmanagerimpl> type <interface org.apache.cxf.bus>
20:45:16.837 [main] debug org.apache.cxf.resource.defaultresourcemanager - resolving resource <null> type <interface org.apache.cxf.bus>
20:45:16.932 [main] debug org.apache.cxf.transport.http_jetty.jettyhttpserverenginefactory - creating jetty http server engine for port 8000.
exception in thread "main" java.lang.noclassdeffounderror: org/eclipse/jetty/server/sessionmanager
    at org.apache.cxf.transport.http_jetty.jettyhttpserverenginefactory.getorcreate(jettyhttpserverenginefactory.java:116)
    ...
caused by: java.lang.classnotfoundexception: org.eclipse.jetty.server.sessionmanager
    at java.net.urlclassloader.findclass(urlclassloader.java:382)
    ...
登录后复制

错误提示缺少jetty相关的jar包,而jetty是cxf默认使用的http服务器之一。代码使用了jaxwsserverfactorybean发布服务,说明这是一个基于cxf的webservice项目。

问题分析与解决:

根本原因是项目缺少必要的jetty依赖。虽然可能已添加部分依赖,但这些依赖可能不适用于spring boot环境。 spring boot推荐使用cxf-spring-boot-starter-jaxws简化cxf集成。此外,还需要添加cxf-rt-transports-http-jetty和cxf-rt-transports-websocket (如果需要websocket支持)来支持jetty http传输和websocket传输。

正确的依赖配置如下:

<dependency>
    <groupid>org.apache.cxf</groupid>
    <artifactid>cxf-spring-boot-starter-jaxws</artifactid>
    <version>3.5.5</version> </dependency>
<dependency>
    <groupid>org.apache.cxf</groupid>
    <artifactid>cxf-rt-transports-websocket</artifactid>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupid>org.apache.cxf</groupid>
    <artifactid>cxf-rt-transports-http-jetty</artifactid>
    <version>3.5.5</version>
</dependency>
登录后复制

添加这些依赖后,项目将包含jetty相关的类,解决java.lang.noclassdeffounderror: org/eclipse/jetty/server/sessionmanager异常,成功发布webservice服务。 请根据实际情况选择合适的版本号,例如替换3.5.5为最新稳定版本。

以上就是spring boot webservice服务发布失败:如何解决jar包缺失导致的java.lang.noclassdeffounderror异常?的详细内容,更多请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com