You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级SOAP WebService遇javax.servlet.http.HttpServlet类找不到错误求助

解决Tomcat 10.1 + Jakarta EE 10环境下SOAP WebService的ClassNotFoundException错误

问题场景

从Tomcat 8.5/JDK 8环境升级SOAP WebService到NetBeans 20/OpenJDK 21/Tomcat 10.1.17,通过Ant创建项目并引入Metro、Jakarta EE 10 API库,但访问服务端点?wsdl时触发以下错误:

java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet

原因分析

Tomcat 10+和Jakarta EE 10已将原Java EE的javax.*包迁移至jakarta.*命名空间,当前使用的Metro版本大概率依赖旧的javax.servlet类,与新环境的Jakarta规范不兼容,导致类加载失败。

解决方案

1. 升级Metro至Jakarta兼容版本

使用支持Jakarta EE 10的Metro 4.x版本(例如4.0.2),旧版Metro(如2.x)依赖javax.*包,无法在Tomcat 10+环境中正常工作。

2. 修正web.xml配置

取消注释并保留WSServletContextListener,确保Servlet类使用Jakarta适配版本:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="6.0" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd">
    <listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>testhelloworld</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>testhelloworld</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

3. 添加sun-jaxws.xml配置

在WEB-INF目录下创建sun-jaxws.xml,明确指定WebService实现类:

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
    <endpoint 
        name="testhelloworld"
        implementation="com.test.helloworld.testhelloworld"
        url-pattern="/hello"/>
</endpoints>

4. 清理冲突依赖

  • 移除项目中所有javax.servlet-api相关依赖
  • 确保仅保留Jakarta EE 10的jakarta.servlet-api依赖,避免命名空间冲突

内容的提问来源于stack exchange,提问作者Mace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 08:06:01