у нас есть старое устаревшее приложение, которое использует Java версии 1.6, обновление 45 (jdk-6u45-windows-i586.exe) и Jacob.dll 1.8 (jacob_18.zip), и которое не может быть обновлено :(
Все работало нормально до последнего обновления Windows 10 1809. С тех пор поведение comobject, похоже, изменилось и вызывает ошибку, а также то, что текстовый документ больше не может быть сохранен. Я также пробовал 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)
Когда я нажимаю на ошибки отправки, я получаю только то, что это недопустимый номер строки в com.jacob.com.Dispatch
Я знаю, что это не лучший день, чтобы не обновить само устаревшее приложение, но что я могу сказать, оно такое, какое оно есть.
Есть идеи, что могло измениться в Windows >= 1809 или как это можно решить, не касаясь приложения?
Спасибо
Стефан
Редактировать:
Dispatch oDocument = Dispatch.call(documents, "Open", str_file).toDispatch(); приводит к той же ошибке
Я должен отметить, что Word открывается, но я не могу сохранить файл и что возвращаемое значение является ошибкой.