jacob实现java调用com组件不成功

wolfshadow.cn 2016-04-20 10:51:48
环境:win10专业版(64bit);eclipse_luna(64bit);jdk1.8.0_77(32bit)
操作步骤:
1、注册com组件到windows (提示成功,且注册表中存在com对应的ID);
2、在java工程中添加jacob.jar, 并设置jre的native
3、编码:
public int init() {
try {
System.out.println("启动进程...");
//ComThread.InitMTA(true);
com = new ActiveXComponent("YinHai.ChenDu.Interface");

ComThread.startMainSTA();
//ComThread.Release();
return 0;
} catch (Exception e) {
System.out.println("转换进程启动失败:" + e);
}
public void test(){
Long lon = new Long(0);
String msg = "";
Variant v1 = new Variant(lon,true);//输出参数定义,必须这样,否则得不到输出参数的值
Variant v2 = new Variant(msg,true);//输出参数定义,必须这样,否则得不到输出参数的值
Variant v3=new Variant();//返回值定义
try {
dispatch = com.getObject();
Dispatch.call(dispatch, "yh_interface_init",v1,v2);
} catch (Exception e) {
// TODO: handle exception
}
System.out.println(v3);

}

return -1;
}
public static void main(String[] args) throws Exception {
try {

EnvironmentControl environmentControl = new EnvironmentControl();
int init = environmentControl.init();
System.out.println(init);
environmentControl.test();
} catch (Exception e) {
System.out.println("Exception");
e.printStackTrace();
// TODO: handle exception
}

}
4、注明:执行初始化方法是成功的,然后执行Dispatch.call(dispatch, "yh_interface_init",v1,v2);时程序就不再往下执行了。debug模式下可以看到程序中止:
dll里面的yh_interface_init接口是这么定义的: function yh_interface_init(out aint_appcode: ^Variant; out astr_appmsg: ^Variant); stdcall;


...全文
622 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
linchixiong 2017-09-21
  • 打赏
  • 举报
回复
请问后面你是怎么解决的?我现在也遇到一样的问题,都是调用的这个,谢谢!
wolfshadow.cn 2016-04-21
  • 打赏
  • 举报
回复
来神啊。。。。
wolfshadow.cn 2016-04-20
  • 打赏
  • 举报
回复
没人回答么?大神去哪儿了

10,608

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧