`
jeffen2006
  • 浏览: 255288 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Hibernate3.2的问题(2)

阅读更多

问题是这样的:

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进行升级,涉及到原来的应用改动,工程浩大、极具风险。

 



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics