Я использую JACOB для COM-вызовов в PowerPoint и других приложениях Office из Java.В конкретном окне Windows 7 я получаю следующее сообщение довольно часто, но не всегда:
Source: Microsoft Office PowerPoint 2007
Description: PowerPoint could not open the file.
Из Excel я получаю:
ERROR - Invoke of: Open
Source: Microsoft Office Excel
Description: Microsoft Office Excel cannot access the file 'c:\marchena\marchena10\work\marchena\batch_58288\input\content_1.xlsx'. There are several possible reasons:
? The file name or path does not exist.
? The file is being used by another program.
? The workbook you are trying to save has the same name as a currently open workbook.
Ошибка Word просто:
VariantChangeType failed
Вот что я запускаю, ошибка исходит из последней строки.
ComThread.InitSTA();
slideApp = new ActiveXComponent("PowerPoint.Application");
Dispatch presentations = slideApp.getProperty("Presentations").toDispatch();
Dispatch presentation = Dispatch.call(presentations, "Open", inputFile.getAbsolutePath(),
MsoTriState.msoTrue.getInteger(), // ReadOnly
MsoTriState.msoFalse.getInteger(), // Untitled The Untitled parameter is used to create a copy of the presentation.
MsoTriState.msoFalse.getInteger() // WithWindow
).toDispatch();
Я пытался установить точку останова перед выполнением вызова Open и файлатам, и я действительно могу открыть его с PowerPoint в графическом интерфейсе, но когда я шагаю, выдается исключение.
Раздражает то, что эта проблема изначально возникает непрерывно, но после некоторого нажатия на нее (повторного запуска одного и того же кода) она в итоге завершается успешно, и после этого никогда не повторяется.
Дальнейшие исследования Я обнаружил, что это происходит только с файлами .ppt, .doc и .xls, но не с .pptx, .docx и .xlsx.И, насколько я могу судить, это не связано с файловой системой (я отключил механизм, который копирует файлы, и попытался поместить файлы в другую файловую систему).
Я только что заметил, что это толькопроисходит, когда приложение Java работает как служба, а не когда я запускаю catalina.bat start
из командной строки.