[size=medium]项目中遇到这样一个问题:使用的第三方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包冲突了,而且内部实现还不完全一样。
:arrow: :arrow: :arrow: [/size]
我觉得你完全可以死心了,Oracle的官方document上写了
只支持sun JDK1.4
http://download.oracle.com/docs/cd/E13196_01/platform/suppconfigs/configs81/81_over/overview.html
使用时指定包名
在MyEclipse的首先项中,配置服务器,打开对应的weblogic配置,展开path,在prepend一栏中,将web工程lib下xxxxx.jar加入,点击确定,启动,ok.
这个你可以去搜索一下 weblogic 的类加载顺序问题,
个人觉得原因有2个可能
一个是JDK1.5之后就集成了JMX1.2,成为了system library了,而WLS8的JMX只有1.0版本,所以匹配不到。你可以system.setProperty把jmx的版本设置成1.0看看
应该能解决
另外一个原因,其实还是JMX的问题,Bea的JDK和 SUN JDK中有一些JMX不匹配,换用Bea的你的问题肯定能解决,但建议用第一个,写行代码而已
东西都是在改进,你如果用WLS9就没这个烦恼了,因为WLS9删除很多JDK1.5之后包含的重复类,比如你说的javax.management
我直接把这个也写给你好了 :wink:
System.setProperty("jmx.serial.form", "1.0")
要监控各个版本的Weblogic,换JRockit好了,应该没有什么更好的解决办法啊 :(