我在调用其他公司提供的DLL,获取属性的时候:
,报了这个错:
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: FPJE
Description: ??Ч??????????
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:804)
at com.jacob.com.Dispatch.get(Dispatch.java:1153)
at nc.ui.so.so002.SaleInvoiceUI.onSoTax(SaleInvoiceUI.java:2837)
at nc.ui.so.so002.SaleInvoiceUI.onButtonClicked(SaleInvoiceUI.java:6390)
at nc.ui.pub.ToftPanel.handleButtonEvent(ToftPanel.java:204)
at nc.ui.pub.FramePanel.dispatchButtonEvent(FramePanel.java:309)
at nc.ui.pub.FramePanel.access$100(FramePanel.java:58)
at nc.ui.pub.FramePanel$ButtonHandler.buttonClicked(FramePanel.java:181)
at nc.ui.pub.ButtonBar.firePostEvent(ButtonBar.java:357)
at nc.ui.pub.ButtonBar$1.run(ButtonBar.java:225)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到这个错误,说明你在使用Jacob库调用COM组件时遇到了问题。错误信息提示为“??Ч??????????”,这表明在尝试访问DLL中的"FPJE"属性时发生了COM异常。这里有几个可能的原因和解决办法:
类型不匹配或属性不存在:首先确认你尝试访问的属性名“FPJE”是否正确,以及该属性是否确实存在于你调用的COM对象中。有时候,由于大小写敏感性、拼写错误或者版本更新导致属性名称变化,都可能导致这个问题。
权限问题:确保你的应用程序有足够的权限去访问和操作这个COM组件。在某些环境下,特别是涉及到系统级服务或组件时,权限不足可能会引发这类错误。
COM组件状态:检查COM组件是否已经正确注册并且运行正常。你可以通过系统的“regsvr32.exe”工具来注册或重新注册DLL文件,或者查看Windows事件查看器是否有相关错误日志。
数据类型转换问题:错误信息虽然没有直接指出,但有时获取属性值时的数据类型不匹配也会导致异常。确保getString()
方法与“FPDM”属性实际返回的数据类型相匹配。如果该属性返回的不是字符串类型,需要相应地调整你的代码。
环境兼容性:确认你的开发环境(如JDK版本、Jacob库版本)与目标COM组件的兼容性。有时候,不同版本的库或JVM可能会有兼容性问题。
异常处理:增强你的异常处理逻辑,尝试捕获更具体的异常信息。可以使用Dispatch.invoke()
方法的重载形式来捕获并打印出更详细的错误信息,这有助于定位问题。
使用日志记录:在调用前后增加日志记录,包括输入参数、返回值等,以便于分析调用过程中的具体行为。
如果以上步骤不能解决问题,建议联系提供DLL的公司获取技术支持,他们可能能提供更具体的指导或确认是否存在已知的问题及解决方案。