更新gwt-module.dtd后Maven编译报错,寻求技术解决方案
GWT模块编译错误及DTD更新后异常解决
环境与初始错误
使用Java 1.8编译器,JRE为jdk-17,执行mvn clean install编译Maven包时,出现如下编译错误:
[INFO] Compiling module mleWidgeset.MLEWidgetset [INFO] [ERROR] Hint: Check that your module inherits 'com.google.gwt.core.Core' either directly or indirectly (most often by inheriting module 'com.google.gwt.user.User')
尝试的解决操作
参考相关方案后,将GWT模块XML文件的DTD引用从:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd">
替换为:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.9.0//EN" "http://www.gwtproject.org/doctype/2.9.0/gwt-module.dtd">
更新后出现的新问题
所有修改过该XML文件的项目均出现XML解析类错误(如"序言中不允许出现内容"或DTD加载失败),已确认该DTD链接可正常访问下载。
解决方案建议
- 统一GWT版本依赖:仅更新DTD引用但未升级项目GWT依赖会导致版本不匹配,需在
pom.xml中将gwt-user、gwt-dev等核心依赖版本升级至2.9.0,保持与DTD版本一致。 - 检查XML文件格式:确保XML文件为UTF-8无BOM编码格式,部分编辑器保存时添加的BOM会导致XML解析报错,可使用专业编辑器转换为"UTF-8无BOM"格式。
- 确认模块继承配置:在GWT模块XML中添加
<inherits name="com.google.gwt.user.User"/>(间接继承Core模块),解决初始的模块继承提示错误。 - 调整JDK版本:GWT 2.9.0官方支持JDK 8~11,使用jdk-17存在兼容性风险,建议切换至JDK 11编译项目。
- 清理Maven缓存:执行
mvn clean install -U强制更新依赖,清除本地仓库中可能存在的旧版本缓存。
内容的提问来源于stack exchange,提问作者JJ Lazzard
相关产品推荐
相关产品推荐

