使用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包冲突了,而且内部实现还不完全一样。 展开
项目实际情况是:我要在JDK1.6环境下监控WebLogic8,需要用到weblogic.jar,但是weblogic.jar提供了javax.management包,与JDK1.6提供的javax.management包冲突了,而且内部实现还不完全一样。 展开
3个回答
展开全部
这样项目也能停滞。。。
你既然用weblogic,就该知道weblogic自带jdk,你别用sun的jdk1.6,用自带的就不会冲突。
其次,jar包都是可以改的,jdk已经开源了,你不想用jdk1.6的rt.jar就改一下重新编译打一个jar包。
最不济,startWebLogic.cmd文件里可以改CLASSPATH的,把 weblogic.jar放在jdk的CLASSPATH之前就行
你既然用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虚拟机》
展开全部
写自定义ClassLoader,对于javax.management包下的类,优先通过自定义的ClassLoader到指定JAR中去加载即可,其余委托给父类加载器加载
参考资料: http://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你引用的时候使用类的全称,应该就不会冲突了!
追问
看来我没有表述清楚,不是包名的问题,我是用到weblogic.jar中的类,而这个类自己会调用javax.management包里的类,但是它是想调用自己的javax.management包,却调用了JDK的javax.management包,所以出错了
追答
改变classpath顺序吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |