JAVA访问DLL出错,不知怎么解决. 出错信息:Native Library C:\Program Files\IBM\WebSphere MQ\Java\lib\mqjbnd05.dll already loaded in another classloader 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你把dll文件放到jdk安装目录下的jre下的bin文件夹里,然后再去访问,试试! 总不至于是你loadlibrary了两次吧,呵呵 关键信息是:“in another classloader”,不知道你是在什么地方使用那个类的。服务器下的几个不同的目录的 jar 文件使用的不同的 ClassLoader,详细是哪几个 ClassLoader 我也记得不是十分确切,但是我建议:1. 如果你知道的话,将使用那个 mqjbnd05.dll 的类放在同一个 jar 下,至少要放在同一个目录下。2. 不要把服务器自带的 jar 文件复制到你自己 webapp 的 lib 目录下。 Tomcat两个webapp都要访问这个dll,怎么解决? 一定是有多个地方放置了这个dll放在system32里面最稳妥当然如果是tomcat放在common/lib里面也是可以的 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; } } 关于static的问题 窗体激活 棘手,如何动态加载一个class 在ireport中怎样根据传过来的变量值改变背景颜色 怎样把多个.java文件编译在一个.java文件里 请问程序编译运行可以,打成jar或exe包后就不能执行! Class.forName(String)是做什么的啊? java中可以直接写pl/spl语句吗? 如果有一个内容超大的表(指行数很多)如何最有效的分页显示?小弟刚来,分不太多,大家包含包含 有谁知道我错哪里? jTextField如何限制输入字符长度? 请教:如何用javadoc?
2. 不要把服务器自带的 jar 文件复制到你自己 webapp 的 lib 目录下。
放在system32里面最稳妥
当然如果是tomcat放在common/lib里面也是可以的
下载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; }
}