JakartaEE应用部署至Payara-6时触发异常,请求协助排查
排查Payara 6部署JakartaEE应用时的ExceptionInInitializerError异常
先梳理日志中的关键错误与警告信息:
[2023-08-23T02:44:31.487+0530] [] [WARNING] [] [jakarta.enterprise.launcher] [...] You are running the product on an unsupported JDK version and might see unexpected results or exceptions.
java.lang.ExceptionInInitializerError
at org.glassfish.pfl.dynamic.codegen.spi.Wrapper$PackageContext.<init>(Wrapper.java:477)
...
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:104)
排查步骤:
优先解决JDK版本不兼容问题
Payara 6仅支持JDK 11和17(LTS版本),日志明确提示使用了不支持的JDK版本,这是触发动态代码生成模块(glassfish-pfl)报错的核心原因:- 执行
java -version检查当前JDK版本 - 替换为Payara官方支持的JDK 11/17,重启服务器后重新部署应用
- 执行
修复JDBC连接池参数错误
日志显示连接池参数配置非法,虽然系统自动使用默认值,但可能引发后续数据库操作异常:- 登录Payara管理控制台,定位到对应的JDBC连接池配置
- 将
maxPoolSize修改为正整数(如默认值32),steadyPoolSize修改为正整数(如默认值8) - 保存配置后重启连接池或服务器
排查EJB类加载与静态初始化问题
如果上述步骤仍未解决,需进一步定位EJB初始化失败的细节:- 获取完整异常堆栈(当前日志缺少
Caused by部分),确认静态初始化块中的具体错误原因 - 检查应用打包的
WEB-INF/lib目录,移除与Payara服务器内置重复的依赖(如glassfish-pfl相关jar包),避免类加载冲突 - 检查EJB类中的静态代码块、静态变量初始化逻辑,确认是否存在空指针、资源加载失败等问题
- 获取完整异常堆栈(当前日志缺少
内容的提问来源于stack exchange,提问作者Python_user
相关产品推荐
相关产品推荐

