Ich verwende JACOB, um COM-Aufrufe an PowerPoint und andere Office-Anwendungen von Java auszuführen. Auf einem bestimmten Feld Windows 7 Ich erhalte die folgende Meldung ziemlich oft, aber nicht immer:Office 2007 kann Dateien nicht öffnen, wenn es von einem Dienst über JACOB aufgerufen wird
Source: Microsoft Office PowerPoint 2007
Description: PowerPoint could not open the file.
aus Excel ich:
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.
Das Wort Fehler ist nur:
VariantChangeType failed
Das folgende ist was ich gerade laufe, der Fehler kommt von der letzten Zeile.
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();
Ich habe versucht, einen Haltepunkt setzt kurz vor dem Open-Aufruf zu tun, und die Datei ist, und ich kann es wirklich mit Powerpoint in der GUI öffnen, aber wenn ich die Ausnahme ausgelöst Schritt.
Die ärgerliche Sache an diesem Problem ist, dass es scheint, kontinuierlich zu beginnen, aber nach dem Stoßen auf es für eine Weile (rununning den gleichen Code), wird schließlich erfolgreich abgeschlossen, und danach nie wieder auftritt.
Weitere Untersuchungen, die ich gefunden habe, geschieht dies nur mit .ppt, .doc und .xls Dateien, nicht .pptx, .docx und .xlsx. Und soweit ich das beurteilen kann, ist es nicht Dateisystem-bezogen (ich habe den Mechanismus ausgetauscht, der die Dateien kopiert und versucht hat, die Dateien auf ein anderes Dateisystem zu setzen).
Ich habe gerade festgestellt, dass dies nur passiert, wenn die Java-Anwendung als Dienst ausgeführt wird, nicht wenn ich catalina.bat start
von der Befehlszeile aus ausführen.
ich den gleichen Fehler, dass die Verwendung. Auch das läuft als Dienst, also war es kopflos absichtlich. –
Ist Ihre Win 7-Box x64 oder x86? Wenn es x64 ist, haben Sie die 64-Bit-JVM bereitgestellt? –
Ja, es ist x64, mit einer 64-Bit-JVM und der x64-Version von jacob.dll. –