com.jacob.com.ComFailException: Can't map name to dispid: Open
这种异常是因为操作完成后,没有调用ComThread.Release()去释放jacob
java.lang.IllegalStateException: Dispatch not hooked to windows memory
这种异常有可能是多次调用了ComThread.Release();而引起的。
但我今天碰到这种异常,却不是这样,在初始化jacob所需的对象的时候,会做一个判断:
if (word == null) {
word = new ActiveXComponent("Word.Application");
word.setProperty("Visible", new Variant(false));
word.setProperty("DisplayAlerts", new Variant(false));
}
if (documents == null) {
documents = word.getProperty("Documents").toDispatch();
}
这里的word和documents是Dispatch类型。
然后每次操作完成后都会调用ComThread.Release()去释放,但释放后word和documents并不为null,所以每次使用jacob都只有第一次是正常的,后面就要报错,然后必须重启tomcat才行。
问题就出在初始化的判断上了,要这样写:
if (word == null||word.m_pDispatch==0) {
word = new ActiveXComponent("Word.Application");
word.setProperty("Visible", new Variant(false));
word.setProperty("DisplayAlerts", new Variant(false));
}
if (documents == null||documents.m_pDispatch==0) {
documents = word.getProperty("Documents").toDispatch();
}
这样可以正常初始化jacob,后面的操作也不会报异常了。
相关推荐
6. **异常处理**:由于Jacob调用的是本地代码,因此可能会抛出一些Java不常见的异常,例如`java.lang.UnsatisfiedLinkError`。正确地捕获和处理这些异常是确保程序稳定运行的关键。 7. **性能考虑**:虽然Jacob提供...
9. **异常处理和日志记录**:为了确保系统的稳定性和可维护性,项目中应该包含适当的错误处理机制和日志记录,以便在出现问题时进行调试和排查。 综上所述,"jacob + servlet + jsp demo"是一个集成的Java Web解决...
5. **异常处理**:由于涉及到与COM组件的交互,务必做好异常处理,防止因系统环境或文件问题导致程序崩溃。 需要注意的是,Jacob并不适用于跨平台的Java应用,因为它依赖于Windows的COM接口。如果你需要在非Windows...
6. **异常处理**:由于Jacob是基于COM组件,所以需要处理可能抛出的`ComException`。确保捕获并适当地处理这些异常。 请注意,Jacob库仅适用于Windows环境,因为它是基于COM接口的。在非Windows操作系统上,你可能...
5. 错误处理:确保添加适当的错误处理代码,以处理可能出现的异常或COM通信问题。 通过这样的方式,开发者可以利用Java和Jacob库轻松地构建一个跨平台的文字转语音应用,尽管 Jacob 是针对 Windows 的,对于其他...
在进行上述操作时,应妥善处理可能出现的异常,例如`com.jacob.com.ComFailException`。 5. 清理资源: 当语音播放完成后,记得释放资源,`tts.invoke("Stop");`停止说话,`tts.dispose();`销毁COM组件。 `demo`...
为了保证系统的稳定性和可维护性,源代码通常会包含异常处理机制,以捕获并处理运行时错误。同时,日志记录也非常重要,它可以帮助开发者追踪程序运行过程中的问题,定位并修复错误。 7. **测试与调试** 开源项目...
以及各种用于数据处理和绘图的命令,如plot、loglog等,这些都是MATLAB中的常用工具,能够帮助科研人员更快地分析数据和展示结果。 MATLAB软件在本研究中的主要应用可以分为几个步骤: 1. 数据收集:从实际的抽水...
1. **Java编程基础**:理解类、对象、方法等基本概念,熟悉异常处理和文件操作。 2. **Java与COM通信**:学习如何使用JBridge或JACOB这类库来调用COM组件。 3. **After Effects的 ExtendScript API**:了解After ...
7. **处理异常**:在整个过程中,必须捕获可能出现的异常,如文件找不到、权限问题或打印机错误等。 在压缩包中的源码,可能会提供一个完整的例子,展示如何将上述步骤整合到一个Java程序中。阅读并理解这些代码,...
5. **掌握C#中的异常处理**:学习如何使用try-catch-finally语句来处理程序运行时可能出现的错误。 6. **了解泛型**:泛型是.NET框架中支持类型安全和代码重用的一种机制,作者将指导读者如何创建和使用泛型类、接口...
- **第7章:调试与错误处理**:探讨如何使用调试工具定位程序中的错误,并通过异常处理机制来优雅地处理运行时错误,提高程序的健壮性。 **8. 面向对象编程简介** - **第8章:面向对象编程简介**:引入类、对象的...
第七章介绍了调试技巧和异常处理机制,帮助开发者有效地定位和解决程序中的错误。 #### 8. 面向对象编程入门 第八章开始介绍面向对象编程(OOP)的基本概念,包括类、对象、继承、封装和多态性。 #### 9. 定义类 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...