在WildFly 30.0.1.Final启动Java应用遇LogManager错误求助
我在WildFly服务器上部署了一个简单Java应用,应用能正常启动,但控制台抛出如下错误:
Dec. 31, 2023 1:37:51 PM org.jboss.logmanager.JBossLoggerFinder getLogger
ERROR: The LogManager accessed before the "java.util.logging.manager" system property was set to "org.jboss.logmanager.LogManager". Results may be unexpected.
我已经添加了以下VM参数试图修复,但问题依然存在:
-Djava.util.logging.manager=org.jboss.logmanager.LogManager-Djava.class.path=$JBOSS_HOME\modules\system\layers\base\org\jboss\logmanager\main\jboss-logmanager-2.1.19.Final
可行修复方案
调整VM参数加载顺序
这个错误的核心是JVM在加载WildFly日志管理器之前就初始化了默认日志系统。必须把-Djava.util.logging.manager=org.jboss.logmanager.LogManager放在所有VM参数的最前面,确保JVM启动时最先读取这个配置。通过WildFly启动脚本配置
不要手动指定java.class.path,WildFly的模块系统会自动处理类路径依赖。直接修改服务器的启动脚本:- Linux/macOS:编辑
standalone.conf或domain.conf,在JAVA_OPTS开头添加:JAVA_OPTS="-Djava.util.logging.manager=org.jboss.logmanager.LogManager $JAVA_OPTS" - Windows:编辑
standalone.conf.bat或domain.conf.bat,添加:set "JAVA_OPTS=-Djava.util.logging.manager=org.jboss.logmanager.LogManager %JAVA_OPTS%"
- Linux/macOS:编辑
修正IDE启动配置(若用IDE运行)
如果是在IDEA/Eclipse中启动WildFly,要在VM选项的最顶部添加-Djava.util.logging.manager=org.jboss.logmanager.LogManager,并且不要手动设置类路径,让IDE自动关联WildFly的模块依赖。检查日志管理器jar包完整性
确认$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/目录下存在jboss-logmanager-2.1.19.Final.jar(你之前的参数漏掉了.jar后缀),如果文件缺失,重新下载对应版本的WildFly或修复模块文件。
内容的提问来源于stack exchange,提问作者Даниил Градов

