项目中遇到这样一个问题:使用的第三方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包冲突了,而且内部实现还不完全一样。
我是要监控WebLogic,我的项目跟WebLogic不在一个机器上,而是在局域网中的任何地方
追答不管你在哪个程序下监控。jdk可以变,jar包可以重编译。classpath仍然可以改,只不过改的是你监控程序的classpath。
这跟你用哪台机器有关系吗?建议你看本书,《深入理解Java虚拟机》
我不能动JDK,也不能动的JAR包,因为我的这个项目只是一个大产品线的一小分子
追答不是说了3个方法,前2条不能用你用第三个,改classpath啊,
别以为只有weblogic能改,你监控程序只要java写的就能改
说的清清楚楚还要追问2次,回答烦了,别追问了
参考资料:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html
本回答被提问者和网友采纳看来我没有表述清楚,不是包名的问题,我是用到weblogic.jar中的类,而这个类自己会调用javax.management包里的类,但是它是想调用自己的javax.management包,却调用了JDK的javax.management包,所以出错了
追答改变classpath顺序吧