分析下 java.lang.ExceptionInInitializerError at com.eba

动态 未结 0 16
邮箱用户_6d1t0
邮箱用户_6d1t0 LV1 前天 18:15 发表
摘要:
分析下 java.lang.ExceptionInInitializerError at com.ebao.foundation.module.configframework.support.spring.WebApplicationContextInitListener.contextInitialized(WebApplicationContextInitListener.java:30) at com.ebao.foundation.module.configframework.support.jsp.ServletContextListenerProxy.contextInitialized(ServletContextListenerProxy.java:31) at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:719) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:344) at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197) Truncated. see log file for complete stacktrace Caused By: java.lang.RuntimeException: spring init fail! at com.ebao.foundation.module.configframework.support.spring.SingleLayerSpringReferenceConfigLocalizer.initApplicationContext(SingleLayerSpringReferenceConfigLocalizer.java:43) at com.ebao.foundation.module.configframework.support.spring.BeanFactory.<init>(BeanFactory.java:33) at com.ebao.foundation.module.configframework.support.spring.BeanFactory.<clinit>(BeanFactory.java:16) at com.ebao.foundation.module.configframework.support.spring.WebApplicationContextInitListener.contextInitialized(WebApplicationContextInitListener.java:30) at com.ebao.foundation.module.configframework.support.jsp.ServletContextListenerProxy.contextInitialized(ServletContextListenerProxy.java:31) Truncated. see log file for complete stacktrace Caused By: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/chl/transfer/toAgentBatchImport' defined in URL [zip:/opt/weblogic/Middleware/user_projects/domains/base_domain/lifesystem/applications/insurance.ear/web.war/WEB-INF/lib/sales-reference.jar!/com/ebao/ls/chl/applicationContext-chl-action.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could n
从堆栈信息来看,这是一个典型的 `ExceptionInInitializerError` 异常,通常是因为静态初始化块或静态变量初始化时抛出了异常。以下是问题的逐步分析: --- ### 1. **核心异常** 最终的根本原因是: ``` Caused By: java.lang.IllegalArgumentException: Invalid version number: Version number may be negative or greater than 255 ``` 该异常发生在 `com.ibm.icu.util.VersionInfo.getInstance()` 方法中,表明 ICU(International Components for Unicode)库在解析版本号时遇到了非法值。 --- ### 2. **异常传播路径** 异常从底层逐步向上抛出,具体传播路径如下: #### (1) **ICU库内部问题** - `com.ibm.icu.impl.ICUResourceBundle.()` 静态初始化失败。 - 原因是 `VersionInfo.getInstance()` 方法接收到非法版本号,导致 `IllegalArgumentException`。 #### (2) **Spring Bean初始化失败** - Spring 在尝试实例化 `AgentBatchImportAction` 类时失败。 - 失败的原因是 `AgentBatchImportAction` 的构造函数中依赖了某些需要 ICU 库的功能,而 ICU 库的初始化已经失败。 #### (3) **Web应用启动失败** - Web 应用的上下文初始化监听器 `WebApplicationContextInitListener` 在初始化 Spring 应用上下文时失败。 - 导致整个应用无法正常启动。 --- ### 3. **可能的原因** 根据堆栈信息和异常描述,以下是可能的原因: #### (1) **ICU库版本冲突** - 系统中可能存在多个版本的 ICU 库,导致加载时出现版本号冲突。 - 检查项目的依赖树,确认是否有重复的 ICU 库版本。 #### (2) **环境配置问题** - 如果使用的是 WebLogic 容器,可能是容器自带的 ICU 库与项目中的 ICU 库版本不兼容。 - 检查 WebLogic 的类加载策略,确保项目依赖的 ICU 库优先于容器自带的库加载。 #### (3) **资源文件损坏** - ICU 库依赖的资源文件(如 `.dat` 文件)可能损坏或缺失。 - 检查 ICU 库的资源文件是否完整。 #### (4) **系统属性问题** - ICU 库可能会读取系统属性来确定版本号。 - 如果系统属性被错误配置,可能导致版本号解析失败。 - 检查 JVM 启动参数中是否设置了与 ICU 相关的系统属性。 --- ### 4. **解决方案** 根据上述原因,可以尝试以下解决方法: #### (1) **检查依赖冲突** - 使用工具(如 Maven 的 `dependency:tree` 或 Gradle 的 `dependencies`)检查项目中是否存在多个版本的 ICU 库。 - 确保只保留一个正确的 ICU 版本。 #### (2) **调整类加载策略** - 如果使用 WebLogic 容器,可以通过 `weblogic.xml` 配置文件设置类加载策略,确保项目依赖的 ICU 库优先加载。 - 示例配置: ```xml com.ibm.icu.* ``` #### (3) **验证资源文件完整性** - 检查 ICU 库的资源文件是否完整。 - 如果资源文件损坏,重新下载或替换 ICU 库。 #### (4) **检查系统属性** - 检查 JVM 启动参数中是否设置了与 ICU 相关的系统属性。 - 如果设置了错误的属性,移除或修正这些属性。 #### (5) **升级 ICU 库** - 如果问题仍然存在,考虑升级 ICU 库到最新版本,以修复潜在的 Bug。 --- ### 5. **总结** 此问题的根本原因是 ICU 库在初始化时遇到非法版本号,导致静态初始化失败,并进一步影响了 Spring Bean 的创建和 Web 应用的启动。通过检查依赖冲突、调整类加载策略、验证资源文件完整性以及检查系统属性,可以有效定位并解决问题。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复