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

使用Tbroyer GWT Maven插件与Errai框架配置Super Dev Mode遇类缺失错误

问题分析

使用Tbroyer的gwt-maven-plugin启动Super Dev Mode时,只要在GWT模块中添加<inherits name="org.jboss.errai.enterprise.All" />,就会触发javax.servlet.Servlet的ClassNotFoundException。原因是Errai Enterprise模块依赖Servlet API,但默认情况下Servlet API依赖的scope是provided,Super Dev Mode运行时无法在classpath中找到该类。

解决方案
  • 调整Servlet API依赖范围
    在客户端模块的pom.xml中,将Servlet API依赖的scope改为runtime(避免影响编译时依赖):
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>runtime</scope>
</dependency>
  • 配置gwt-maven-plugin的类路径
    如果不想修改依赖scope,可以在插件配置中指定包含runtime依赖的类路径,或者显式添加Servlet API到额外类路径:
<plugin>
    <groupId>net.ltgt.gwt.maven</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <version>1.0.1</version>
    <configuration>
        <moduleName>你的GWT模块全称</moduleName>
        <!-- 让codeserver使用compile+runtime范围的依赖 -->
        <classpathScope>compile+runtime</classpathScope>
        <!-- 或者单独添加Servlet API依赖 -->
        <extraClasspath>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
            </dependency>
        </extraClasspath>
    </configuration>
</plugin>
  • 统一管理依赖版本
    如果项目中存在Servlet API版本冲突,在主pom.xml的<dependencyManagement>中统一版本:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:52:19