com.jacob.com.ComFailException: VariantChangeType failed

博主在使用Jacob进行Word文档转PDF过程中遇到ComFailException错误,在Windows Server 2012 R2上部署时出现问题。通过一系列调试与尝试,最终发现只需在特定路径下创建一个Desktop文件夹即可解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      苦恼的一天啊~~~~本以为今天解决不了这个bug,原打算明天继续奋战,不料大获成功,终于不用在和这个可恶的bug做斗争了。可气的是再服务器上发布的完全没有问题,但是当在服务器(windows Server 2012 R2)上部署时就出现问题。真是有点搞不懂,问大神,大神貌似有点忙没空搭理我,只好自己和bug作斗争,终于我的简报生成成功了,哈哈希望来了......

出错问题

com.jacob.com.ComFailException: VariantChangeType failed
at com.jacob.com.Variant.toVariantDispatch(Native Method)
at com.jacob.com.Variant.toDispatch(Variant.java:1999)
at com.sysway.DocToPic.doc2picServiceImpl.createPDF(doc2picServiceImpl.java:73)
at com.sysway.DocToPic.doc2picServiceImpl.PicAddree(doc2picServiceImpl.java:202)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:59)
at org.codehaus.xfire.service.invoker.ObjectInvoker.invoke(ObjectInvoker.java:45)

代码

ActiveXComponent app = new ActiveXComponent("Word.Application");
// 设置word不可见
app.setProperty("Visible", false);
// 获得word中所有打开的文档,返回Documents对象
Dispatch docs = app.getProperty("Documents").toDispatch();
// 调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
Dispatch doc = Dispatch.call(docs, "Open", inputFile, false, true).toDispatch();
// 调用Document对象的SaveAs方法,将文档保存为pdf格式
Dispatch.call(doc, "ExportAsFixedFormat", pdfFile, wdFormatPDF);// word保存为pdf格式宏,值为17
// 关闭文档
Dispatch.call(doc, "Close", false);
// 关闭word应用程序
app.invoke("Quit", 0);

解决方法

  在C:\Windows\System32\config\systemprofile下创建文件夹Desktop即可!

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值