J'utilise JACOB pour effectuer des appels COM vers PowerPoint et d'autres applications Office à partir de Java. Sur une boîte de Windows 7 particulier, je reçois le message suivant assez souvent, mais pas toujours:Office 2007 ne parvient pas à ouvrir les fichiers lorsqu'il est appelé via JACOB à partir d'un service
Source: Microsoft Office PowerPoint 2007
Description: PowerPoint could not open the file.
ExCelet je reçois:
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.
L'erreur mot est juste:
VariantChangeType failed
Ce qui suit est ce que je cours, l'erreur vient de la dernière ligne.
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();
J'ai essayé de mettre un point d'arrêt juste avant de faire l'appel ouvert et le fichier est là, et je peux effectivement l'ouvrir avec PowerPoint dans l'interface graphique, mais quand je fais un pas l'exception est levée. Ce qui est ennuyeux à propos de ce problème, c'est qu'il semble arriver de façon continue au début, mais après l'avoir piqué pendant un certain temps (réexécutant le même code), il finit par aboutir avec succès, et ne se reproduit plus jamais. Recherche supplémentaire J'ai trouvé que cela n'arrive qu'aux fichiers .ppt, .doc et .xls, pas .pptx, .docx et .xlsx. Et autant que je sache, ce n'est pas lié au système de fichiers (j'ai échangé le mécanisme qui copie les fichiers et j'ai essayé de placer les fichiers sur un autre système de fichiers).
Je viens de remarquer que cela se produit uniquement lorsque l'application Java s'exécute en tant que service, et non lorsque j'exécute catalina.bat start
à partir de la ligne de commande.
je reçois la même erreur en utilisant cela. Aussi, cela fonctionne comme un service, donc l'avoir sans tête était délibérée. –
Est-ce que votre Win 7 box x64 ou x86? Si c'est x64, avez-vous déployé la JVM 64 bits? –
Oui, c'est x64, avec une JVM 64 bits et la version x64 de jacob.dll. –