<a href="http://guojuanjun.blog.51cto.com/277646/288121">http://guojuanjun.blog.51cto.com/277646/288121</a>
在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误,无法找到在war或者ear中的hibernate3.jar。
出现这个错误之后,antlr会调用system.exit(),这样weblogic就会中止服务。
<a href="http://topic.csdn.net/u/20100915/11/537e76f6-8fa1-4f7f-846c-51122ba8f4b8.html">http://topic.csdn.net/u/20100915/11/537e76f6-8fa1-4f7f-846c-51122ba8f4b8.html</a>
jar包冲突是普通的jar包还是bundle。
应该是这样的:在jar包中定义好了依赖的jar及其版本。而jar包冲突的原因有可能是因为:
1。使用了高版本的。eclipse中使用jar包(eclipse里安装的jar全是bundle)有个机制,就是高版本优先。例如你有两个版本,1.0和2.0,同时装进去的时候有可能使用的是2.0,而这么高的版本,或许又会依赖高版本的其他jar包,你本身的环境又不存在,因此会出问题。
2。还有个原因有可能是你在使用jar包的时候使用的版本不匹配。当调用jar包中的方法的时候,有可能会不存在这个方法而报错。这种情况经常发生在版本变动较大的情况
目前我就想出了这两点可能的原因
尤其是第一点,这个和类加载的关系不太大吧,加载的就是高版本的jar,低版本的加载不进去
<!--end_rbody_68409914//-->
<a href="http://www.iteye.com/problems/63567">http://www.iteye.com/problems/63567</a>
感谢帮助,后经研究,只能通过自定义classloader实现,对于javax.management包下的类,优先通过自定义的classloader到指定jar中去加载即可,其余委托给父类加载器加载