Wildfly 10能否在JDK 17 LTS环境运行及启动报错问题咨询
1 报错含义
你遇到的报错本质是JDK 9引入的模块化系统强封装规则导致的兼容性问题:
JDK 17默认禁止所有未命名模块(也就是传统类路径下加载的代码,你用的Wildfly 10属于这类)访问JDK内部非公开API。报错最底层的IllegalAccessError明确说明:Wildfly依赖的__redirected.__SAXParserFactory类需要访问JDK java.xml模块下的内部类com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl,但java.xml模块默认没有把这个内部包开放给未命名模块,所以XML解析工厂初始化失败,直接阻断了Wildfly的启动流程。
2 是否可以通过修改JAVA_OPTS配置实现运行
理论上可以通过添加JVM参数开放被封禁的内部包来规避报错,但需要添加的参数数量多,且仅能解决启动阶段的问题:
你可以先在standalone.sh的JAVA_OPTS中添加以下参数尝试启动:
--add-exports java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED \ --add-exports java.xml/com.sun.xml.internal.stream=ALL-UNNAMED \ --add-exports jdk.unsupported/sun.misc=ALL-UNNAMED \ --add-opens java.base/java.lang=ALL-UNNAMED \ --add-opens java.base/java.lang.reflect=ALL-UNNAMED
即使你凑齐所有必要的参数让Wildfly成功启动,后续部署业务应用时也大概率会遇到更多兼容性问题:比如JDK 8之后删除的API调用失败、类加载冲突、反射权限不足等,运行稳定性完全没有保障。
3 Wildfly 10是否支持JDK 17 LTS
Wildfly 10官方完全不支持JDK 17 LTS:
- Wildfly 10是2016年发布的版本,官方认证支持的最高JDK版本为JDK 8,连JDK 11都未做过兼容性适配
- Wildfly官方从Wildfly 26版本开始才正式提供JDK 17的兼容性支持,之前的所有版本均未针对JDK 17做测试、也不会修复相关兼容性问题
内容的提问来源于stack exchange,提问作者EasyRider
相关产品推荐
相关产品推荐

