使用Jacob便捷调用Java与OCX控件:方法、问题与解决
需积分: 11 25 浏览量
更新于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
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫