Windows 10> = 1809问题与jacob和Word ComObject有关

时间:2019-01-17 09:07:22

标签: windows-10 jacob comobject

我们有一个旧的旧版应用程序,该应用程序使用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已打开,但是我无法保存文件,并且返回值是错误的

1 个答案:

答案 0 :(得分:1)

好的,错误与这篇文章中介绍的相同:

Exception from Word.ApplicationClass.Activedocument all of a sudden

因此,这似乎是> = 1809中的错误,目前唯一的解决方法是更改​​/播放区域设置