RegAsm注册DLL组件使用jacob调用的问题com.jacob.com.ComFailException: Can't co-create object

      线上一个项目使用了到jacob调用dll文件,由于最近客户迁移到了私有云环境中,服务器的操作系统从32位的换成了64位的,使用RegAsm注册的时候,提示说不是有效的win程序,就想到了是因为操作系统的位数换了,所以从新在新版的vs上面重新生成了下dll文件,在注册就ok了。

     没想到过了一段时间后,客户反应项目的某个功能不能正常使用了,经过查看日志发现是java在通过jacob调用dll文件的时候,提示com.jacob.com.ComFailException: Can't co-create object,当时就郁闷啊,这明明迁移过来的时候好好的,跟其他同事确认了下,他们最近也没有去改变服务器的环境啥的。然后我尝试着吧dll卸载了重新注册,再试还是一样的错误。百度了下,比较多的是2中情况:

      1.确认“DCom Server Process Launcher”这个服务选项默认是运行的。

       2.确认在java代码中,通过jacob调用的ProgId和你注册的dll的ProgId是一致的

通过检查,发现不符合上面的情况,后来有尝试着用管理员权限的cmd来注册dll,调用还是一样的错误,在windos/system32下面注册又报错,大意是无法调用依赖啥的,于是想着配置RegAsm的环境变量试试,进入到对应的目录后,我猛然发现,注册也分32和64位的。。。

 

 我一直进入的是默认的Framework目录下面的v4版本的RegAsm,于是换成64位的注册,再试项目功能正常了。后来想了下,有可能是因为服务器开启了update,导致服务器的环境发生了变化。

附带RegAsm的常用命令:

RegAsm  /u  dllFileName  卸载注册的dll

RegAsm dllFileName  /tlb:tlbFileName  注册dll文件

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值