我们有一个旧的旧版应用程序,该应用程序使用Java 1.6版更新45(jdk-6u45-windows-i586.exe)和Jacob.dll 1.8(jacob_18.zip),并且无法更新:(
一切正常,直到最新的Windows 10 1809更新为止。从那时起,comobject的行为似乎已经改变并导致错误以及无法再保存word文档。我也尝试了19H1,但遇到了同样的错误。
我可以使用以下代码在Java中重现该问题,当然您必须导入Jacob.dll:
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Variant;
import com.jacob.com.Dispatch;
ActiveXComponent oWord = new ActiveXComponent("Word.Application");
oWord.setProperty("Visible", new Variant(true));
Dispatch documents = oWord.getProperty("Documents").toDispatch();
String str_file = "C:/temp/test.rtf";
Dispatch doc = Dispatch.invoke(documents, "Open", Dispatch.Method,
new Object[]{str_file},
new int[1]).toDispatch();
我得到的错误是:
Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Open
Description: An unknown COM error has occured.
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:384)
at com.jacob.com.Dispatch.invoke(Dispatch.java:267)
at Main.main(Main.java:21)
当我点击Dispatch错误时,我只会得到它不是com.jacob.com.Dispatch中的有效行号
我知道不是更新旧版应用程序本身不是最好的一天,但是我可以说的是现状。
有什么想法在Windows> = 1809中可能发生了什么变化,或者如何在不触摸应用程序的情况下解决它?
谢谢
斯蒂芬
编辑:
Dispatch oDocument = Dispatch.call(documents,“ Open”,str_file).toDispatch();导致相同的错误
我应该提到Word已打开,但是我无法保存文件,并且返回值是错误的
答案 0 :(得分:1)
好的,错误与这篇文章中介绍的相同:
Exception from Word.ApplicationClass.Activedocument all of a sudden
因此,这似乎是> = 1809中的错误,目前唯一的解决方法是更改/播放区域设置