问题是这样的:
hibernate是需要解析xml的,其中3.2版本自带了dom4j-1.6.1.jar,我本机开发也是采用这个包。开发测试一切OK。
我们的应用服务器是weblogic,有些程序是需要自动启动的,就是在weblogic上启动的时候需要自动运行,这其中也用到了xml解析,我们用的是dom4j-full.jar。
问题就出在这2个包上,dom4j-full.jar里面的dom4j版本是1.0,hibernate的是1.6.1。
如果我将1.6版本的先加载,自启动程序就不能运行,整个应用没法使用。
如果我将1.0版本的先加载,程序启动了,我的hibernate程序就出错。
我进行了错误追踪发现:
dom4j-full.jar里面org\jaxen\dom4j\下有一个XPath.class;org\dom4j\下还有一个XPath.class。而
dom4j-1.6.1.jar里面org\dom4j\下有一个XPath.class。
当我将dom4j-full.jar先加载时,hibernate总是去找org\jaxen\dom4j\下的XPath.class,我就天真的将这个XPath.class删掉,然后用新版本的XPath.class代替旧版本的XPath.class然后重新打包发布,怎么都不行。什么变态的替换办法都用到了,还是不行。
java引用类是这样的,如果有相同的类(在不同的jar中),总是返回最先找到的,就导致了如上的问题。
真是没辙呀!
最后我甚至打算去下载hibernate的源码,将引用全部写完整,然后重新编译(我可没这么干过),使它能够找到正确的包。结果发现hiber网站提供的源码下载方式不是cvs的,sourceforge上提供的cvs也超时连不上。好烦,作罢。
看来只有2种出路了:
1、放弃hibernate
2、将dom4j进行升级,涉及到原来的应用改动,工程浩大、极具风险。
分享到:
相关推荐
hibernate3.2 hibernate3.2 hibernate3.2 hibernate3.2
这是一个struts 1.2 + spring 2.5 + hibernate 3.2框架demo, 运行环境为eclipse 3.2 + tomcat 5.5 + oracle 11g
Hibernate高官谈Hibernate3.2新特性
hibernate3.2的chm格式api手册。
scr压缩包中含Hibernate3.2整套源码,对于Hibernate的学习者来说不可多得哦~
Hibernate3.2 数据持久层框架必不可少的jar包,直接放在lib目录里即可使用。
struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本 ,mysql,tomcat,myeclipse完整工程
整合struts2.1和hibernate3.2的JAR包
Hibernate3.2官方中文参考手册.pdf+Hibernate.pdf(Hibernate的学习资料)
struts2+spring2.5+hibernate3.2 找了半天没看到。自己整了一个。
hibernate3.2 源码 hibernate 源码 hibernate3.2
hibernate 3.2 hibernate 3.2 hibernate 3.2 hibernate 3.2 hibernate 3.2
Struts2+hibernate3.2+Spring2.0架构搭建的菜鸟实例,按照每一步搭建自己的软件架构
Hibernate 3.2 中文参考手册 博文链接:https://luxiangdong.iteye.com/blog/214583
hibernate3.2 需要的hibernate3.2以及所有文件,非常全面,该有的都有。
hibernate 3.2用到的jar包
可持久化层hibernate3.2 帮助文档
hibernate的核心jar包,使用hibernate必须的
Hibernate3.2中文参考文档Hibernate3.2中文参考文档Hibernate3.2中文参考文档Hibernate3.2中文参考文档Hibernate3.2中文参考文档Hibernate3.2中文参考文档