java调用COM组件 DLL

java调DLL自己曾经也做过,当时是通过JNI调的,极其麻烦需要写C++的中间程序,这次又遇到了类似的问题,需要在java中调用vb.net写的com组件,dll的,而且dll封装的不是方法,而是类定义,需要在调用的时候自己实例化对象。一开始还打算走JNI的老路,但发现JNI只能直接调用DLL中的方法,无法进行对象实例化。后来无意间在sourceforge上看到jacob项目,一试之下果然不凡,不用碰C、C++,直接调用,废话少说,步骤如下:

    从sourceforge上下到jacob的压缩包,其中有两个关键文件,一个是jacob-[版本号].jar,另一个是jacob-[版本号]-[x86/x64].dll,其中x86对应32位操作系统,x64对应64位的,把这个dll放到windows/system32下,jacob.jar导入项目的classpath,把dll用.net framework注册,以我的机器上.net framework安装位置为例,注册命令为:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\regsvcs.exe [需要调用的dll文件路径]

注册后就可以在java程序中调了,

ActiveXComponent axc = new ActiveXComponent("ZDSJMSF.SC.ZDSJMSF.SuanFa"); //构造函数参数为Class全名
Dispatch mycom = (Dispatch) axc.getObject(); //相当于对象实例化
Dispatch.put(mycom, "propBuySum","5424"); //为对象的属性赋值
Dispatch.callN(mycom, "Init", new Object[] {});//调用无参数方法Init为方法名
Dispatch.callN(mycom, "GetBuyCode", new Object[] {15,"9"}); //调用带参方法
String propBuyCode = Dispatch.get(mycom, "propBuyCode").getString();//获取对象属性


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值