jacob 报错

xianaofei 2014-08-30 10:57:09
有人么 请教一下JACOB
以下代码 执行的时候会不定期报错
for (int i = 0; i < 1000; i++) {
ActiveXComponent app = new ActiveXComponent("Word.Application");
try {
System.out.println("i = " + i);
String productContFilePath = "C:/cont/test/d.doc";
String savePath = "C:/cont/test/b111fcffaea" + "_" + i + ".doc";

app.setProperty("Visible", new Variant(false));
Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method,
new Object[] { productContFilePath, new Variant(false),
new Variant(false) }, new int[1]).toDispatch();

Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
savePath, new Variant(1) }, new int[1]);

Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
try {
Thread.sleep(100L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

System.out.println("success...");

我这段代码 执行的时候 不定期的会报错
JACOB用1.9的

比如下面执行到第79次报错了

i = 76
i = 77
i = 78
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Open
Description:
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:804)
at com.jacob.com.Dispatch.invoke(Dispatch.java:483)
at com.wits.cdm.web.action.contract.TestSaveAs.main(TestSaveAs.java:23)
Exception in thread "main" com.jacob.com.ComFailException: Can't map name to dispid: Quit
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:804)
at com.jacob.com.Dispatch.callN(Dispatch.java:440)
at com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java:489)
...全文
196 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
huasuoworld 2014-08-31
  • 打赏
  • 举报
回复
调用windows的com组件出错了,app.invoke("Quit", new Variant[] {});,你调用ActiveXComponent的其他invoke函数试一试。
xianaofei 2014-08-31
  • 打赏
  • 举报
回复
用过的帮忙看一下 是否是JDK JACOB OFFICE 版本问题 我JDK 1.6 JACOB 1.18,OFFICE 2007

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧