java.lang.ClassCastException: com.enity.www.User_$$_javassist_2 cannot be cast to javassist.util.proxy.Proxy
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(...)
專案類路徑下存在多個版本的 javassist.jar(如 javassist-3.12.1.GA.jar 與 javassist-3.18.1-GA.jar),Hibernate 與 Struts2/其他庫依賴不同版本,導致代理類生成與預期介面不匹配。
mvn dependency:tree | grep javassist 或 IDE 依賴分析,找出重複 jar。<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<exclusions>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependencyManagement> 指定單一版本(建議 3.27.0-GA 或更新穩定版)。target/、伺服器 lib/、.m2/repository 快取後重建。單獨測試時類路徑較簡單,無版本衝突;整合 Struts2 後引入額外依賴鏈,觸發衝突。
lazy="false" 繞過問題,會導致效能下降(全量載入關聯)。mvn dependency:analyze 檢測未使用/衝突依賴。Jar 衝突是 Java 企業級開發常見痛點,善用依賴管理工具能從根源解決。