使用JAR包中的类与JDK的rt.jar冲突的问题

项目中遇到这样一个问题:使用的第三方JAR包中有一个整包(javax.management)与JDK的javax.management包重复了,但是具体实现却是不一样的,... 项目中遇到这样一个问题:使用的第三方JAR包中有一个整包(javax.management)与JDK的javax.management包重复了,但是具体实现却是不一样的,运行的时候第三方JAR包里的类试图调用自己提供的javax.management包里的类,但是JDK也提供了javax.management包,所以虚拟机优先调用了自己的javax.management里的类,于是就出错了。请问这个问题要怎么解决?因为这个原因项目已经停滞好久了,希望看到的大侠给解答一下,不甚感激!

项目实际情况是:我要在JDK1.6环境下监控WebLogic8,需要用到weblogic.jar,但是weblogic.jar提供了javax.management包,与JDK1.6提供的javax.management包冲突了,而且内部实现还不完全一样。
展开
 我来答
一个正直的吧友
2011-04-18 · TA获得超过3143个赞
知道小有建树答主
回答量:941
采纳率:0%
帮助的人:1094万
展开全部
这样项目也能停滞。。。
你既然用weblogic,就该知道weblogic自带jdk,你别用sun的jdk1.6,用自带的就不会冲突。
其次,jar包都是可以改的,jdk已经开源了,你不想用jdk1.6的rt.jar就改一下重新编译打一个jar包。
最不济,startWebLogic.cmd文件里可以改CLASSPATH的,把 weblogic.jar放在jdk的CLASSPATH之前就行
更多追问追答
追问
我是要监控WebLogic,我的项目跟WebLogic不在一个机器上,而是在局域网中的任何地方
追答
不管你在哪个程序下监控。jdk可以变,jar包可以重编译。classpath仍然可以改,只不过改的是你监控程序的classpath。
这跟你用哪台机器有关系吗?建议你看本书,《深入理解Java虚拟机》
562116039
推荐于2018-04-19
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
写自定义ClassLoader,对于javax.management包下的类,优先通过自定义的ClassLoader到指定JAR中去加载即可,其余委托给父类加载器加载

参考资料: http://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
egghead008
2011-04-18 · TA获得超过1164个赞
知道小有建树答主
回答量:1424
采纳率:100%
帮助的人:1401万
展开全部
你引用的时候使用类的全称,应该就不会冲突了!
追问
看来我没有表述清楚,不是包名的问题,我是用到weblogic.jar中的类,而这个类自己会调用javax.management包里的类,但是它是想调用自己的javax.management包,却调用了JDK的javax.management包,所以出错了
追答
改变classpath顺序吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式