出错信息:Native Library C:\Program Files\IBM\WebSphere MQ\Java\lib\mqjbnd05.dll already loaded in another classloader

解决方案 »

  1.   

    你把dll文件放到jdk安装目录下的jre下的bin文件夹里,然后再去访问,试试!
      

  2.   

    总不至于是你loadlibrary了两次吧,呵呵
      

  3.   

    关键信息是:“in another classloader”,不知道你是在什么地方使用那个类的。服务器下的几个不同的目录的 jar 文件使用的不同的 ClassLoader,详细是哪几个 ClassLoader 我也记得不是十分确切,但是我建议:1. 如果你知道的话,将使用那个 mqjbnd05.dll 的类放在同一个 jar 下,至少要放在同一个目录下。
    2. 不要把服务器自带的 jar 文件复制到你自己 webapp 的 lib 目录下。
      

  4.   

    Tomcat两个webapp都要访问这个dll,怎么解决?
      

  5.   

    一定是有多个地方放置了这个dll
    放在system32里面最稳妥
    当然如果是tomcat放在common/lib里面也是可以的
      

  6.   

    Java调用COM笔记 
    下载JCOM,解压取出jcom.jar和jcom.dll两个文件。
    1、   将附件的jcom.jar复制到本地,并设置环境变量引用之(最简单快捷的办法就是将该jar包解压到自己的代码目录中)。 2、   该dll copy到JDK目录的bin目录下。 3、   查找需要调用的COM主件名称。注意,COM组件名称并不是dll文件的名称,可以到注册表中查询。
    4、   查找调用的COM的接口方法: 可以在Microsoft Visual Studio .NET 2003 中引用相应的DLL,在“对象浏览器”中就可以看到该组件的所有接口方法: 
    5、   Java调用代码: import jp.ne.so_net.ga2.no_ji.jcom.*; public class ProcessXML {          public static void main(String[] args) {                    Process();          }          public static String Process(){                    ReleaseManager rm = new ReleaseManager();              try {                  IDispatch vbcom = new IDispatch(rm, "U8Distribute.iDistribute");              Object[] param = new Object[] { "XXXXX" };                  String strRet = (String)vbcom.method( "Process", param );                             System.out.println("return: "  + strRet);              }              catch ( Exception e ) {                  e.printStackTrace();              }              finally {                  rm.release();              }              return null;          }