Office 2007 не может открывать файлы при вызове через JACOB из службы

Я использую 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 из командной строки.

7
задан Sindri Traustason 14 September 2010 в 13:01
поделиться