使用Jacob便捷调用Java与OCX控件:方法、问题与解决
需积分: 11 47 浏览量
更新于2024-09-11
收藏 330KB DOC 举报
本文主要探讨了在Java环境中通过不同方式调用ActiveX Control Object (OCX) 控件的技术,重点集中在JACOB这一工具上。Java Native Interface (JNI) 和 Jawin 是其他两种常见的方法,但本文主要介绍的是JACOB的优势和使用方法。
1. **JNI**:JNI是Java与C/C++交互的底层接口,用于实现Java与OCX的通信。虽然这种方法直接且强大,但涉及到大量的底层工作,如内存管理和类型转换,对Java开发者来说难度较大,因此并不推荐初学者使用。
2. **Jawin**:Jawin提供了更为简洁的编程风格,但它更偏向于Windows编程环境,对于纯Java开发者可能不够直观。尽管它的效果良好,但在跨平台或需要保持Java编程习惯的场景下,JACOB显得更为合适。
3. **JACOB**:JACOB是一个备受推崇的工具,它使得Java程序员能够轻松地与OCX进行集成,其Java编程风格使得学习曲线较平缓,需要掌握的知识相对较少。JACOB的使用流程包括初始化ComThread和创建Dispatch对象,以及调用OCX方法。例如,无参方法的调用是通过`Dispatch.call(disp,"Init").getShort()`,而带参数的方法则使用`Dispatch.call(disp,"Method",newVariant(args)).getBoolean()`。
然而,在实际应用中,JACOB可能会遇到`ComFailException`异常,这通常源于Ole4.0版本后对OCX调用权限的检查。系统会检查控件是否正确初始化和通过持久存储接口加载,如果没有满足这些条件,就会抛出错误。MFC应用程序由于内部处理了这些细节,用户通常不会遇到这个问题。然而,从C或C++的DLL中直接调用OCX时,由于缺乏类似过滤,可能会遭遇8000FFFF错误,这时需要检查并确保控件的正确初始化和加载。
总结来说,JACOB是Java调用OCX的一种高效且易用的解决方案,但在使用过程中需要注意处理好权限和初始化问题。对于那些希望避免底层细节并保持Java编程风格的开发者来说,JACOB是一个值得考虑的选择。然而,对于特定场景,比如处理底层细节或需要高度兼容性的项目,可能还需要结合JNI或Jawin等其他工具来优化。
2018-07-18 上传
2010-11-10 上传
2013-10-28 上传
2013-03-07 上传
2012-12-01 上传
2008-05-28 上传
2011-09-21 上传
gyygjh
- 粉丝: 9
- 资源: 64
最新资源
- starship:未来的node.js Web框架
- SpanceSniffer显示您硬盘中文件和文件夹的分布情况的应用程序,不需要安装
- Blog:位于http上的博客文章的代码
- blog-cms
- bluetoothLedControl:通过蓝牙 LED 控制-开源
- facial-recognition-system
- 深入解析String类:掌握Java中字符串处理的关键方法.zip
- TensorFlow_Tensorflow北大慕课代码_
- 基于HTML实现的非响应式办公企业橘红网站单页网页(含HTML源代码).zip
- soundcloud-for-vs-code
- phpmodbus:使用PHP实现基于Modbus TCP和UDP协议的基本功能
- jDear-imgui:小型Java C ++亲爱的imgui绑定
- ignite-challenge-04
- 房屋交易-房屋交易平台-房屋交易平台源码-房屋交易平台java代码-基于Web的房屋交易平台设计与实现-房屋交易平台设计与实现
- 2021-02-snaps-TheGamerCollective:GitHub Classroom创建的2021-02-snaps-TheGamerCollective
- toni_experimentell