启动Hazelcast Management Console时报上下文初始化异常求助
Hazelcast Management Console 启动报错排查
问题描述
仅在启动Hazelcast Management Console时出现报错,Hazelcast服务端运行完全正常。
完整报错日志
2021-09-01 16:05:21,965 [ WARN] [main] [o.s.w.c.s.AnnotationConfigWebApplicationContext]: 上下文初始化过程中遇到异常,正在取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException: 创建URL [jar:file:/C:/hazelcast-management-center-4.2021.06/hazelcast-management-center-4.2021.06.jar!/com/hazelcast/webmonitor/service/MapManager.class] 中定义的名为'mapManager'的bean时出错:构造函数参数0表示的依赖项未满足;嵌套异常为org.springframework.beans.factory.UnsatisfiedDependencyException: 创建URL [jar:file:/C:/hazelcast-management-center-4.2021.06/hazelcast-management-center-4.2021.06.jar!/com/hazelcast/webmonitor/service/ClientNearCacheStatsManager.class] 中定义的名为'clientNearCacheStatsManager'的bean时出错:构造函数参数1表示的依赖项未满足;嵌套异常为org.springframework.beans.factory.UnsatisfiedDependencyException: 创建URL [jar:file:/C:/hazelcast-management-center-4.2021.06/hazelcast-management-center-4.2021.06.jar!/com/hazelcast/webmonitor/service/metrics/MetricsService.class] 中定义的名为'metricsService'的bean时出错:构造函数参数0表示的依赖项未满足;嵌套异常为org.springframework.beans.factory.BeanCreationException: 创建类路径资源[com/hazelcast/webmonitor/config/MetricsStorageConfig.class]中定义的名为'metricsStorage'的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstantiationException: 无法实例化[com.hazelcast.webmonitor.metrics.MetricsStorage]:工厂方法'metricsStorage'抛出异常;嵌套异常为java.lang.ExceptionInInitializerError 2021-09-01 16:05:21,971 [ERROR] [main] [o.s.w.c.ContextLoader]: 上下文初始化失败 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mapManager' defined in URL [jar:file:/C:/hazelcast-management-center-4.2021.06/hazelcast-management-center-4.2021.06.jar!/com/hazelcast/webmonitor/service/MapManager.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'clientNearCacheStatsManager' defined in URL [jar:file:/C:/hazelcast-management-center-4.2021.06/hazelcast-management-center-4.2021.06.jar!/com/hazelcast/webmonitor/service/ClientNearCacheStatsManager.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'metricsService' defined in URL [jar:file:/C:/hazelcast-management-center-4.2021.06/hazelcast-management-center-4.2021.06.jar!/com/hazelcast/webmonitor/service/metrics/MetricsService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'metricsStorage' defined in class path resource [com/hazelcast/webmonitor/config/MetricsStorageConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.hazelcast.webmonitor.metrics.MetricsStorage]: Factory method 'metricsStorage' threw exception; nested exception is java.lang.ExceptionInInitializerError at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1354) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:401) ~[hazelcast-management-center-4.2021.06.jar:?] at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:292) [hazelcast-management-center-4.2021.06.jar:?] at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1068) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:572) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:997) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:746) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:911) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.server.Server.start(Server.java:423) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.server.Server.doStart(Server.java:387) [hazelcast-management-center-4.2021.06.jar:?] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) [hazelcast-management-center-4.2021.06.jar:?] at com.hazelcast.webmonitor.Launcher.startServer(Launcher.java:160) [hazelcast-management-center-4.2021.06.jar:?] at com.hazelcast.webmonitor.Launcher.start(Launcher.java:129) [hazelcast-management-center-4.2021.06.jar:?] at com.hazelcast.webmonitor.Launcher.main(Launcher.java:107) [hazelcast-management-center-4.2021.06.jar:?]
根因分析
报错链条最底层为java.lang.ExceptionInInitializerError,是MetricsStorage指标存储类的静态初始化阶段出错,触发了后续Spring Bean依赖注入的连锁失败,和Hazelcast服务侧无关联。
排查与解决步骤
- 校验JDK版本兼容性:Hazelcast Management Center 4.2021.06仅适配JDK 8(291以上小版本)、JDK 11,使用JDK 16及以上高版本会触发类初始化异常,可执行
java -version确认当前环境的JDK版本,版本不符则切换到兼容版本即可。 - 检查存储目录权限:程序默认会在当前启动用户的家目录下创建
.hazelcast-mc目录存储监控指标数据,若启动用户无家目录读写权限,会导致指标存储初始化失败。可以给对应目录授予读写权限,或者启动时添加JVM参数-Dhazelcast.mc.home=自定义可读写的目录路径指定存储位置。 - 验证Jar包完整性:若下载的Jar包存在损坏,也会导致类加载初始化失败,可重新下载官方对应版本的完整Jar包重试。
- 排查自定义配置错误:如果修改过Management Center的配置文件,错误的Metrics存储相关配置(如自定义数据库连接配置错误、存储策略参数非法)也会触发该异常,可移除自定义配置文件,使用默认配置启动验证。
内容的提问来源于stack exchange,提问作者shebu
相关产品推荐
相关产品推荐

