
我是java使用jacob调用com组件,所得的返回值为null,这个要怎么解决?以下是我的代码:
public static void main(String[] args) throws ParseException {
// 初始化JACOB库,加载DLL文件
ComThread.InitSTA(false);
// 初始化COM组件
ActiveXComponent comComponent = new ActiveXComponent("YinHai.XJ.Actual.Interface.New.1.0");
try {
//ActiveXComponent comComponent = new ActiveXComponent("Excel.Application");
// 创建Dispatch对象
Dispatch dispatch = (Dispatch)comComponent.getObject();
//Methods
//Dispatch dispatch = comComponent.getProperty("COClass_n_yh_interface_n").toDispatch();
//Dispatch dispatch1 = comComponent.getProperty("In_ybjk_interface").toDispatch();
System.out.println("dispatch:"+dispatch);
YBQLC_IN ybqlc_IN = new YBQLC_IN();
ybqlc_IN.setTransNo("1401");
ybqlc_IN.setTransType("passwordCheck");
String format= "yyyyMMddHHmmss";
SimpleDateFormat sdf= new SimpleDateFormat(format);
String date = sdf.format(new Date());
ybqlc_IN.setTimestamp(date);
YBQLC_IN_Data in_Data = new YBQLC_IN_Data();
in_Data.setFixmedinsCode("1020001");
in_Data.setPsnNo("");
in_Data.setBusinessType("01101");
in_Data.setOpterId("1");
in_Data.setOpterName("管理员");
in_Data.setDeptId("0001");
in_Data.setDeptName("内科");
//in_Data.setDeviceType("1");
ybqlc_IN.setData(in_Data);
String in_data_json = new Gson().toJson(ybqlc_IN);
YBQLC_OUT ybqlc_OUT = new YBQLC_OUT();
ybqlc_OUT.setCode("");
ybqlc_OUT.setMessage("");
YBQLC_OUT_Data out_Data = new YBQLC_OUT_Data();
out_Data.setAuthNo("");
out_Data.setBirthday("");
out_Data.setChnlld("");
out_Data.setEcIndexNo("");
out_Data.setEcQrCode("");
out_Data.setEcToken("");
out_Data.setEmail("");
out_Data.setGender("");
out_Data.setIdNo("");
out_Data.setIdType("");
out_Data.setInsuOrg("");
out_Data.setUserName("");
out_Data.setNationality("");
ybqlc_OUT.setData(out_Data);
ybqlc_OUT.setOrgId("");
String out_data_json = new Gson().toJson(ybqlc_OUT);
// 创建参数
Variant param1 = new Variant("1401");
Variant param2 = new Variant(in_data_json);
Variant param3 = new Variant(out_data_json);
// 调用COM组件的方法,传递参数
Variant result = Dispatch.invoke(dispatch, "gxyb_call",Dispatch.Method, new Variant[] {param1,param2,param3}, new int[1]);
System.out.println("result1:"+result);
} catch (ComFailException e) {
e.printStackTrace();
} catch (UnsatisfiedLinkError e1) {
e1.printStackTrace();
}finally {
// 关闭 COM 组件,释放资源
comComponent.safeRelease();
ComThread.Release(); // 释放资源
}
}