You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liberty服务器从JDK 8升级到JDK 21后EntityManager未注入为空的问题求助

Liberty服务器从JDK 8升级到JDK 21后EntityManager未注入为空的问题求助

大家好,最近在做应用版本升级时碰到了个棘手的问题,想请各位帮忙分析下:

之前我的应用在JDK 8 + Liberty 22.0.0.10环境下运行完全正常,现在我把环境升级到了JDK 21 + Liberty 24.0.0.9,已经调整了pom.xml里的依赖版本,也修改了Liberty服务器的特性配置。目前应用能正常启动,REST接口和JMS队列都能正常工作,但只要一触发数据库操作,就会抛出空指针异常——原因是我通过依赖注入的EntityManager对象em是空的!在JDK 8的旧环境里它可是能正常注入、完全没问题的。

具体报错信息如下:

nliberty.opentracing.internal.OpentracingJaxRsEMCallbackImpl W CWMOT0009W: The OpenTracing exception mapper detected and is handling an unhandled exception from the JAX-RS application.
java.lang.NullPointerException: Cannot invoke "javax.persistence.EntityManager.find(java.lang.Class, Object)" because "this.em" is null

我使用的是JPA 2.2库,确认过Liberty对JPA 2.2的支持是包含JDK 21的。下面是我pom.xml里最相关的配置片段(我升级了部分核心依赖的版本):
[此处为用户未完整粘贴的pom.xml相关内容]

我已经尝试过的排查动作

  • 检查Liberty服务器的server.xml,确认已正确启用jpa-2.2特性
  • 验证EntityManager的注入方式(用的是@Inject/@PersistenceContext,和旧环境完全一致)
  • 确认persistence.xml配置没有变动,数据源也能正常连接

想请教大家的问题

有没有人碰到过类似的跨JDK版本升级问题?可能是什么原因导致EntityManager在JDK 21 + Liberty 24环境下无法正常注入?有没有什么排查或解决的思路?


备注:内容来源于stack exchange,提问作者Accollativo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:55:28