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

WildFly 27出现ClassNotFound异常,Servlet无法运行求助

解决Servlet运行及ClassNotFound异常问题

问题梳理

  • 初始环境:WildFly 10 + JRE 1.8 → 安装JRE 1.8后,报错编译生成的字节码版本63.0不被支持(63.0对应Java 19的class文件版本)
  • 调整后环境:WildFly 27 + Java 19 → 版本兼容问题解决,但出现ClassNotFound异常

针对性修复步骤

1. 对齐项目编译与运行环境配置

  • 检查IDE编译设置:确保项目的SDK版本、语言级别、字节码编译版本全部设置为Java 19
  • 构建工具配置校验:
    Maven项目需在pom.xml中明确编译版本:
    <properties>
        <maven.compiler.source>19</maven.compiler.source>
        <maven.compiler.target>19</maven.compiler.target>
    </properties>
    
    Gradle项目需在build.gradle中配置:
    java {
        sourceCompatibility = JavaVersion.VERSION_19
        targetCompatibility = JavaVersion.VERSION_19
    }
    

2. 校验WildFly运行配置

  • 确认WildFly启动JDK路径:打开WildFly安装目录下bin/standalone.conf(Linux)或bin/standalone.conf.bat(Windows),确保JAVA_HOME指向Java 19的安装路径
  • 清理部署缓存:删除standalone/deployments下的临时文件与war包,同时删除standalone/data/content中的缓存内容,重新部署项目

3. 定位ClassNotFound的具体原因

  • 查看服务器完整日志,明确缺失的类:
    • 若为自定义Servlet类:检查类是否存在于编译输出目录(如target/classes),且包路径与web.xml或@WebServlet注解配置一致
    • 若为第三方依赖类:确认依赖已正确引入,且Maven/Gradle已将依赖打包至war包的WEB-INF/lib目录(可解压war包验证)
  • 注意:WildFly 27自带Jakarta EE API实现,若项目中引入了Servlet API等冲突依赖,需将其设置为<scope>provided</scope>(Maven)或compileOnly(Gradle),避免类加载冲突

4. 新建项目的验证要点

  • 新建项目时,直接选择WildFly 27作为服务器,Java 19作为SDK
  • 编写最简测试Servlet快速验证:
    @WebServlet("/test")
    public class TestServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
            response.getWriter().write("Servlet Test Success");
        }
    }
    
    部署后访问http://localhost:8080/项目名/test,若仍报错,重点分析日志中的类加载细节

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:36:09