运行Wildfly项目出现org.jboss.logmanager非法反射访问警告如何解决
Wildfly 12 非法反射访问警告解决方案
根因说明
该警告是Java 9及以上版本新增的模块系统访问校验触发的,你当前使用的Wildfly 12内置的jboss-logmanager-2.0.9.Final为Java 8适配版本,未兼容高版本JDK的模块访问规则,尝试反射访问JDK内置私有构造方法java.util.logging.Level$KnownLevel(java.util.logging.Level)时触发提示。
可选解决方案
- 方案1:添加JVM启动参数消除警告
该方案无需修改服务依赖,仅需在Wildfly启动配置中新增权限开放参数即可:- 对应修改配置文件:单机模式下修改
bin/standalone.conf(Linux环境)或bin/standalone.conf.bat(Windows环境),集群模式修改对应domain.conf配置 - 找到
JAVA_OPTS配置项,追加参数:--add-opens java.logging/java.util.logging=org.jboss.logmanager - 重启Wildfly服务后警告即可消除
- 对应修改配置文件:单机模式下修改
- 方案2:升级jboss-logmanager组件版本
该版本日志组件存在兼容缺陷,可替换为适配高版本JDK的兼容版本jboss-logmanager-2.1.18.Final:- 备份原有日志组件文件:路径为
wildfly-12.0.0.Final/modules/system/layers/base/org/jboss/logmanager/main/下的jar包和module.xml配置 - 将新版jar包放入上述路径,修改
module.xml中jar文件名对应新版本 - 重启服务即可
- 备份原有日志组件文件:路径为
- 方案3:降级JDK版本到Java 8
Wildfly 12官方推荐的运行环境为Java 8,该版本无模块系统访问限制,完全不会触发此类反射警告。 - 临时处理方案:该警告仅为JDK提示信息,不会影响服务正常运行,若无功能异常可暂时忽略,待后续架构整体升级时统一处理即可。
内容的提问来源于stack exchange,提问作者prakash kumar
相关产品推荐
相关产品推荐

