使用Gradle构建的EAR部署到WildFly8时出现jdk.unsupported模块缺失错误
解决WildFly 8部署EAR时jdk.unsupported:main模块找不到问题
问题场景
使用Gradle构建的EAR应用部署到WildFly 8服务器时触发模块加载失败,核心报错为:
Caused by: org.jboss.modules.ModuleNotFoundException: jdk.unsupported:main
当前使用JDK 8,且已确认版本兼容。
解决方案
1. 手动配置jdk.unsupported模块
WildFly 8默认未配置jdk.unsupported模块来映射JDK 8中的非标准API(如sun.misc包),需手动添加:
- 在WildFly安装目录下创建路径:
modules/system/layers/base/jdk/unsupported/main - 在该目录新建
module.xml,写入以下内容:
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="jdk.unsupported"> <resources> <resource-root path="."/> </resources> <dependencies> <module name="java.base"/> </dependencies> </module>
2. 调整WAR部署结构配置
如果应用代码依赖jdk.unsupported模块,可在WAR的WEB-INF目录下添加jboss-deployment-structure.xml,明确依赖关系:
<jboss-deployment-structure> <deployment> <dependencies> <module name="jdk.unsupported" export="true"/> </dependencies> </deployment> </jboss-deployment-structure>
若依赖非必要,建议排查代码中是否使用了sun.misc等非标准API,替换为JDK标准API(例如用java.util.concurrent相关类替代sun.misc.Unsafe)。
3. 升级jboss-modules版本
WildFly 8默认的jboss-modules-1.3.3.Final对JDK 8模块支持存在缺陷,可替换为兼容版本:
- 下载
jboss-modules-1.4.0.Final或更高兼容版本 - 替换WildFly根目录下的
jboss-modules.jar - 重启WildFly服务器
验证步骤
- 清理WildFly
standalone/deployments目录下的部署残留文件 - 重新用Gradle构建EAR包,确保构建无依赖错误
- 重新部署应用,查看服务器日志确认问题是否解决
内容的提问来源于stack exchange,提问作者Rishabh Mathe
相关产品推荐
相关产品推荐

