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

WebLogic 12c部署EJB应用遇javax.persistence.Entity类加载异常求助

解决WebLogic 12c部署EJB时的javax.persistence.Entity类加载异常

首先,咱们来拆解这个异常的核心原因:interface javax.persistence.Entity is not visible from class loader本质是类加载器冲突——同一个JPA API的不同版本被多个类加载器加载,或者重复的JPA包导致类加载器无法找到正确的类实例。结合你的配置和已放置的JAR包,问题主要出在这几个地方:

问题分析

  1. 重复的JPA API包:你在WL_DOMAIN/lib里同时放了hibernate-jpa-2.0-api-1.0.1.Final(JPA 2.0)和javax.persistence_1.0.0.0_1-0-2(JPA 1.0),这两个是不同版本的JPA规范API,会导致类加载混乱。
  2. 不完整的weblogic-application.xml配置:你提供的配置片段缺少闭合的</prefer-application-packages>标签,这会让WebLogic无法识别你设置的「优先加载应用包」规则,依然沿用默认的父类加载器优先逻辑,进一步加剧冲突。
  3. 冗余的容器支持包:com.oracle.jpa2support_1.0.0.0_2-1是WebLogic自带的JPA2支持包,如果你已经引入了Hibernate的JPA实现,这个包可能会和Hibernate的依赖冲突。

分步解决方案

1. 清理WL_DOMAIN/lib中的重复JPA包

只保留与你应用兼容的JPA版本包:

  • 如果你用的是JPA 2.0,保留hibernate-jpa-2.0-api-1.0.1.Final,删除javax.persistence_1.0.0.0_1-0-2(JPA 1.0版本)。
  • 移除com.oracle.jpa2support_1.0.0.0_2-1,因为Hibernate已经提供了JPA的实现,不需要WebLogic自带的支持包。
  • 确认hibernate和dom4j包版本与JPA 2.0兼容(比如Hibernate 3.6+支持JPA 2.0)。

2. 修复weblogic-application.xml的配置

确保配置标签完整,让WebLogic优先加载应用中的JPA相关类:

<prefer-application-packages>
  <package-name>antlr.*</package-name>
  <package-name>javax.persistence.*</package-name>
</prefer-application-packages>

(补充闭合标签后,WebLogic才会正确应用这个类加载优先级规则)

3. 检查应用自身的依赖

确认你的EJB应用的lib目录(或者WAR的WEB-INF/lib)中没有重复的JPA API包(比如javax.persistence.jar之类的)。如果有,直接删除——因为你已经通过prefer-application-packages指定了优先加载,或者通过WL_DOMAIN/lib提供了API包,重复的包只会导致冲突。

4. 重启WebLogic并重新部署

做完以上修改后,重启WebLogic服务器,然后重新部署你的EJB应用,应该就能解决这个类加载异常了。

内容的提问来源于stack exchange,提问作者Prerna shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:52:55