您的位置:首页 > 编程语言 > Java开发

java调用com对第三方软件进行操作

2016-12-06 11:43 696 查看
项目需要对第三方软件进行操作
给出的得是com接口 ,于是我们选择使用java调用com完成操作
java调用com有几种jar包可以使用
如jacob(java com bridge),jawin(貌似2005年是最后的更新时间),com4j(貌似是对企业级客户收费,1999刀)
我们选择了jacob作为我们的jar包
网上使用这个jar包对word进行操作的文章不少
ActiveXComponent comObj=new ActiveXComponent("TruckSim.Application");
Dispatch truckobject=(Dispatch)comObj.getObject();
Dispatch.call(truckobject, "GoHome");
       Dispatch.call(truckobject,"DeleteDataSet","","News","External Control of Runs");
DeleteDataSet
是方法名 方法名后面可以带多个参数
Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:At Invoke of: DeleteDataSetDescription: 8002000e /
无效的参数数目。
报错:无效的参数数目  
这个错误是因为你方法的参数缺少或者多了导致的,注意: 输出参数也需要填上
Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:At Invoke of: SetTableDescription: 80020005 /
类型不匹配。报错:类型不匹配
参数的类型不对,表示你的输入参数类型不对,Variant我遇到了double[][]
的输入参数 ,尝试了各种方法都不对原来在jacob中需要将数组变成SafeArray的类型
下面举个例子:Double[][] a={{1.2,3.3},{3.3,4.3}};SafeArray safeArray=new SafeArray(Variant.VariantDouble, 2, 2); for(int i = 0; i < 2; i++) { for (int
j = 0; j < 2; j++) { // set the value of safearray[i][j] to value polyPoints[i][j] safeArray.setDouble(i, j, kk[i][j]); System.out.println(kk[i][j]); }然后将safearray填入参数所在位置,成功将double[][]
执行
但是
在输出参数位置,我选择了String,StringBuffer,StirngBuilder,Variant.VariantString都没有能够输出正确的返回值
Variant a=New Variant(Variant.VariantString,true)
报错
无效的被呼叫方 没有找到有效的返回方法,目前正在使用python java未找到有效的COM返回
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: