苦恼的一天啊~~~~本以为今天解决不了这个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即可!