项目中遇到这样一个问题:使用的第三方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包冲突了,而且内部实现还不完全一样。
问题补充:
lyy3323 写道
使用时指定包名
看来我没有表述清楚,不是包名的问题,我是用到weblogic.jar中的类,而这个类自己会调用javax.management包里的类,但是它是想调用自己的javax.management包,却调用了JDK的javax.management包,所以出错了
问题补充:
小卓SUN 写道
个人觉得原因有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
第一个办法我试过了,不行,可以获取到Home,但是之后的操作出错。
我是要监控WebLogic 7、8、9、10各个版本
采纳的答案
我觉得你完全可以死心了,Oracle的官方document上写了
只支持sun JDK1.4
http://download.oracle.com/docs/cd/E13196_01/platform/suppconfigs/configs81/81_over/overview.html
2011年4月20日 15:43
小卓SUN
个人觉得原因有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
2011年4月18日 16:55
小卓SUN
1. MyEclipse中启动做配置
在MyEclipse的首先项中,配置服务器,打开对应的weblogic配置,展开path,在prepend一栏中,将web工程lib下xxxxx.jar加入,点击确定,启动,ok.
2. 修改weblogic启动命令
好像是 set PRE_CLASSPATH=%DOMAIN_HOME%\lib\antlr.jar。
这个你可以去搜索一下 weblogic 的类加载顺序问题,
2011年4月18日 16:44
lyy3323